Ĵ,87 79 72 70 67 57 56个字符
'( ) 'charsub|.|:(+/\@('('&=-')'&=)(],~' '$~[)"0])1!:1[1
从键盘获取输入。例:
'( ) 'charsub|.|:(+/\@('('&=-')'&=)(],~' '$~[)"0])1!:1[1
((1 2)(3 (4 5) moo)) (i (lik(cherries)e (woohoo)))
4 5 cherries woohoo
1 2 3 moo lik e
i
说明:
该说明基于我的程序的第一个版本:
|.|:('( ) 'charsub x)((' '$~{.@]),[{~{:@])"1(('('&([:+/=)-')'&([:+/=))\,.i.@#)x=.1!:1[1
x=.1!:1[1
从键盘输入并将其输入x
以备后用
(('('&([:+/=)-')'&([:+/=))\,.i.@#)
在字符串(i.@#
)中创建所有索引的列表,并将,.
其与(('('&([:+/=)-')'&([:+/=))\
动词的结果一起缝合()。
(('('&([:+/=)-')'&([:+/=))\
这个动词应用到所有字符串的前缀(等输入hello
它将适用于h
,he
,hel
,hell
,和hello
。这是一个叉,其计算开放括号的数量('('&([:+/=)
,然后减去密切括号的数量')'&([:+/=)
,这给了我清单在字符串中将inIndex定义为字符串,并且该索引处的字符应位于输出中的水平上。
(('('&([:+/=)-')'&([:+/=))\,.i.@#)x=.1!:1[1
(one(two(three)))
1 0
1 1
1 2
1 3
2 4
2 5
2 6
2 7
3 8
3 9
3 10
3 11
3 12
3 13
2 14
1 15
0 16
((' '$~{.@]),[{~{:@])"1
这是一个动词,它包含我刚刚生成的列表以及输出('( ) 'charsub x)
(该字符串只进行字符串替换以用中的空格替换所有括号x
)。它采用列表中每个项目的尾部,{:@]
并将其用作字符串的索引以获取字符[{~{:@]
。然后,它,
以列表中每个项目的开头所指示的空格数作为前缀(' '$~{.@])
。在前面的示例中,这给了我:
('( ) 'charsub x)((' '$~{.@]),[{~{:@])"1(('('&([:+/=)-')'&([:+/=))\,.i.@#)x=.1!:1[1
(one(two(three)))
o
n
e
t
w
o
t
h
r
e
e
然后,我转置数组|:
并将其反转|.
以获得所需的输出。
((1 2))))))))))3
如果禁止负高度,则输入应该无效。