パスワードを忘れた? アカウント作成
699422 journal

bravoの日記: すたっく 2

日記 by bravo

なんとなくスタック処理を考えてみた。

#!/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は計算すれば出せるけどいいか...

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy

読み込み中...