Write a simple parser that will parse and run Deadfish.
Deadfish has 4 commands, each 1 character long:
i increments the value (initially 0) d decrements the value s squares the value o outputs the value into the return array Invalid characters should be ignored.
parse("iiisdoso") ==> [8, 64]
我的解法就很直白,大部分人基本上都是这样做的,虽然也想过有没有其他的解法,但是没想出来 233
1 2 3 4 5 6 7 8 9
defparse(data): init = 0 out = [] for i in data: if i == 'i': init += 1 elif i == 'd': init -= 1 elif i == 's': init *= init elif i == 'o': out.append(init) return out
提交之后看到有个人是下面这样的解法,惊了,突然感觉 get 到了某种小技巧(但是不记下来可能过段时间就忘了
1 2 3 4 5 6 7 8 9
defparse(data): action = {'i': lambda v, r: v + 1, 'd': lambda v, r: v - 1, 's': lambda v, r: v * v, 'o': lambda v, r: r.append(v) or v} v, r = 0, [] for a in data: v = action[a](v, r) if a in action else v return r