bravoの日記: すたっく 2
なんとなくスタック処理を考えてみた。
#!/usr/bin/env python
class Stack:
def __init__(self):
self.depth = 0
self.stack = [[]]
def push(self, data):
data = int(data)
print "push:", data
self.stack.append([data])
self.depth += 1
def pop(self, data):
print "pop"
self.stack.pop()
self.depth -= 1
def add(self, data):
data = int(data)
print "add:", data
self.stack[self.depth].append(data)
def __str__(self):
return str(self.depth) + str(self.stack)
from string import join
stack = Stack()
for line in map(lambda s: s.strip(), open('data.txt').readlines()):
tokens = line.split()
op, value = tokens[0], join(tokens[1:])
getattr(stack, op)(value)
print stack
で、data.txtには
add 1
push 2
push 3
pop
pop
push 4
push 5
add 6
pop
add 7
push 8
pop
pop
add 9
add 10
てなかんじにかいておいて、ジッコー。depthは計算すれば出せるけどいいか...
すたっく (スコア:1)
Java の Stack クラスに似てるかも。(extends Vector なのは如何なものかと思うけど(^^;)
Re:すたっく (スコア:1)
でもPythonていうなら蛇拳かも :)