J, 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
. 그것은되는 포크 열린 괄호의 수를 계산 ('('&([:+/=)
한 다음 닫기 괄호의 수를 뺍니다 ')'&([:+/=)
. 이것은 나에게 목록을 제공 문자열에 대한 indeces와 해당 인덱스의 문자가 출력에 있어야하는 레벨 간단한 입력에서 다음을 제공합니다.
(('('&([:+/=)-')'&([:+/=))\,.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
음수 높이가 금지 된 경우 입력 이 유효하지 않아야합니다.