在此挑战中,必须将列表列表解析为更简单的列表格式。
此挑战基于我的sadflak解析器。在我的sadflak解析器中,它删除了所有(),替换为列表开头的()s之和,以使程序运行得更快。
要将其解析为悲伤列表,您必须这样做(python实现,使用元组的一个元组):
def sadlistfunc(list):
new-sadlist = [0]
for i in list:
if i == ():
new-sadlist[0]+=1
else:
new-sadlist.append(sadlistfunc(i))这是一个递归函数。对于一个列表,启动一个新的列表,从列表输入中的()开始,然后这个列表的其余部分依次是每个列表中没有()的悲伤列表版本。把名单还给我。
您可以采用几种不同的格式进行输入:
如果你把它当作字符串,你应该使用一些括号,就像在脑子里显示的一样。您不能使用字符1和字符2。
只要讲理
输入总是在一个列表中,但是您的程序可能在输入之外假定一个隐式列表层,即()=(())(),或者它可能选择不这样做。示例将包含显式外部列表。
可能是列表、元组或字符串,或者其他什么。您可以使用任何合理的输出格式,这是元共识。
(()()()) = [3]
(((()))) = [0,[0,[1]]]
((())()(())) = [1, [1], [1]]
() = invalid input, if the outside bracket is explicit.
((((())())())(())()) = [1, [1, [1, [1]]], [1]]注意,输入并不严格。这些投入可以是:
[[],[],[]]
[[[[]]]]
[[[]],[],[[]]]
[]
[[[[[]],[]],[]],[[]],[]]或者其他合理的格式
(()()((())())())要"sadify“这个,我们首先要计算()的数量。
()() ()
( ((())()) )(3,((())()))这个列表中有一个列表。我们把这个
((())())有多少人?
()
((()) )(1,(()))这里面有一个列表
(())计数
()
( )移除并添加计数
(1)然后我们把这个放回它的列表
(1,(1))然后我们把这个放回它的列表
(3,(1,(1)))完成
这是密码-高尔夫,所以更短更好
发布于 2017-06-26 00:35:43
L+]/bYyM-b]Yy测试套件。
L+]/bYyM-b]Yy
L define a function y with argument b:
/bY list 1: count how many [] can be found in b
] wrap into singleton
-b]Y list 2: filter out [] from b
yM apply y (this function) to each
+ concatenate the two lists above
y apply y to the input发布于 2017-06-26 08:22:36
https://codegolf.stackexchange.com/questions/128325
复制相似问题