2014-01-29 72 views
0

想象一下,上图中位于轨道输入侧的四个铁路车厢分别编号为1,2,3和4。假设我们执行以下操作顺序(它与图中箭头的方向兼容,并且不需要汽车“跳过”其他汽车):列表中的数字返回列表

由于这些操作的原始顺序, 1234已更改为2431.

上面的操作可以通过代码SSXSSXXX更简洁地描述,其中S代表将汽车从输入移动到堆栈中,X代表将汽车从堆叠到输出中。 S和X的一些序列指定无意义的操作,因为在指定轨道上可能没有汽车可用;例如,序列SXXSSXXS不能执行。 (试试吧,看看为什么。)

编写和测试能够模拟火车车厢切换的功能: #[import语句] 进口q2_fun

# [constants] 

# [rest of program code] 
cars = [1, 2, 3, 4] 
s_x = input("enter a code with s's and x's to move one stack to another") 
list1 = q2_fun.train_swicth(cars, s_x) 
print(list1) 

from stack_array import Stack 

def train_swicth(cars, s_x): 

    s = Stack() 
    list1 = [] 

    for i in range(len(s_x)): 
     if s_x[i] == "s": 
      a = s_x.append() 
      s.push(a) 
     elif s_x[i] == "x": 
      b = s.pop() 
      list1.append(b) 


    return list1 

我不断收到[]作为回报,它应该是2431与ssxssxxx。我可以得到一些帮助吗?

+0

请更新您的问题,你的第一个段落。就目前而言,理解你的问题几乎是不可能的。 (提示:句号是一个很好的发明) –

+0

@SteinarLima所以_are_复数动词。 – ApproachingDarknessFish

回答

0

,如果我理解你的权利,你可以这样做:

def train_swicth(cars, s_x): 
    i=0 
    s=[] 
    out=[] 
    for c in s_x: 
     if c=="s": 
      s.append(cars[i]) 
      i+=1 
     elif c=="x": 
      out.append(s.pop()) 
    return out 

的列表可以被用作与追加栈作为按压操作