Itsellä tuli projektin kanssa pieni ongelma kun Pythonissa ei ole pinoja. Noh, eipä muuta kuin uusi luokka kehiin. En ole varma, että onko Pythonissa jo valmiina pino-ominaisuudet.
# -*- coding: latin1 -*- ## -*- coding: cp850 -*- class Stack: sta = [0] def __init__(self): self.sta[0]=0 def __call__(self,d=1): ret=self.Pop() if d: self.Clear() return ret def Put(self,num): self.sta[0]=self.sta[0]+1 self.sta.append(num) #It's not needed to use these. def Pop(self): return self.sta[self.sta[0]] def Move(self,m): self.sta[0]=self.sta[0]+m def Clear(self): self.sta[self.sta[0]]=0 self.sta.remove(0) self.sta[0]=self.sta[0]-1 #Mathematic functions def Copy(self): self.sta.append(self.sta[self.sta[0]]) self.Move(1) def Plus(self): self.sta[self.sta[0]-1]=self.sta[self.sta[0]-1]+self.sta[self.sta[0]] self.Clear() def Minus(self): self.sta[self.sta[0]-1]=self.sta[self.sta[0]-1]-self.sta[self.sta[0]] self.Clear() def Multiplication(self): self.sta[self.sta[0]-1]=self.sta[self.sta[0]-1]*self.sta[self.sta[0]] self.Clear() #Other def Swap(self): a=self.sta[self.sta[0]] self.sta[self.sta[0]]=self.sta[self.sta[0]-1] self.sta[self.sta[0]-1]=a def Over(self): a=self.Pop() self.sta[self.sta[0]]=self.sta[self.sta[0]-2] self.sta[self.sta[0]-2]=a # Kommentit näyttävät pinon sisällön. s=Stack() s.Put(3) # 3 s.Copy() # 3 3 s.Copy() # 3 3 3 s.Multiplication() # 3 9 s.Swap() # 9 3 s.Put(2) # 9 3 2 s.Put(1) # 9 3 2 1 print s() # 9 3 2 print s() # 9 3 print s() # 9 print s() # raw_input("Lopeta painamalla entteriä.")
Koodi ei ole kovin mallikelpoista, ainakin Pop ja Clear toimivat väärin, ja sitä paitsi Pythonin lista toimii hyvin myös pinona:
s = [] s.append(3) s.append(s[-1]) s.append(s[-1]) s.append(s.pop() * s.pop()) s[-1], s[-2] = s[-2], s[-1]
Aihe on jo aika vanha, joten et voi enää vastata siihen.