> <> , 106 104 바이트
> <>이 (가)이 언어에 가장 적합한 언어가 아닐 수도 있지만 포기하지 않고 게시하지 않았습니다. *
4 행의 끝 부분은 공간이 될 예정이다. 이 코드가 얼마나 놀랍도록 괴상한 지 좋아하지 않습니까? 온라인으로 사용해보십시오 .
<v?(0:i
v>~" ## "}}l:::
>"#"o1-:?!v02.>~a"#"oo
"-2ooa"#"~<.31v!?:-1o"
7v?=3loroo"#"a<.4
.>";^"e3pa2p093
다음은 포인터가 어떻게 움직이는 지에 대한 아이디어를 제공하는 방향 전환기 이외의 버전입니다 (예 : "teleport"문을 생략했습니다. .
).
방향 흐름 :
<v
v>
> v >
< v
v <
>
설명
스택의 시각화는 입력을 기반으로합니다. input
. > <>는 2 차원 언어이므로, 아래 코드를 실행할 때 포인터가 행 사이를 이동하는 위치에주의하십시오 (이 코드에서<>v^
에서 주로 방향을 변경하는 데 사용됨). 포인터가 시작되는 위치에서 설명을 시작하겠습니다. 포인터가 다섯 번째 줄 다음으로 뒤로 이동함에 따라 두 개의 줄이 반복됩니다.
>>에 대해 항상 멋진 점은 자체 소스 코드를 수정하는 기능이며이 프로그램에서이를 사용합니다. 3 행과 4 행은 각각의 문자를 수정하여 마지막 두 행을 인쇄하기 위해 재사용됩니다.
라인 1 : 입력 루프
<v?(0:i
< change direction to left
(0:i checks if input is less than 0 (no input defaults to -1)
v? change direction to down if so
스택: [-1,t,u,p,n,i]
라인 2 : 출력의 세 번째 라인을 생성합니다
v>~" ## "}}l:::
>~" ## "}} remove -1 (default input value) from stack and pads with # and spaces
l::: push 4 lengths of padded input
스택: [9,9,9,9,#, ,t,u,p,n,i, ,#]
3 행 : 출력의 첫 번째 행을 인쇄합니다
>"#"o1-:?!v02.>~a"#"oo
>"#"o print "#"
1- subtract 1 from length (it's at the top of the stack)
:?!v move down if top of stack is 0
스택: [0,9,9,9,#, ,t,u,p,n,i, ,#]
산출:
#########
라인 4 : 출력의 두 번째 라인을 인쇄합니다
"-2ooa"#"~<.31v!?:-1o"*
-2ooa"#"~< pops 0, prints newline, "#", then decrements length by 2
" o"* prints space (* is supposed to be space char)
-1 decrements top of stack
.31v!?: changes direction to down if top of stack is 0, else jumps back to "
스택: [0,9,9,#, ,t,u,p,n,i, ,#]
출력 ( *
공간을 나타냄) :
#########
#*******
라인 5 : 출력의 세 번째 라인을 인쇄합니다
7v?=3loroo"#"a<.4
oo"#"a< prints "#",newline
r reverses stack
7v?=3lo .4 outputs until stack has 3 values, then changes direction to down
스택: [9,9,0]
산출:
#########
# #
# input #
6 행 : 출력의 4 번째 및 5 번째 행을 인쇄하도록 자체 설정
.>";^"e3pa2p093
>";^" push ";",then "^"
e3p place "^" as the fifteenth character on line 4
a2p place ";" as the eleventh character on line 3
0 push a value (value doesn't matter -- it will be deleted)
. 93 jump to the tenth character on line 4
스택: [0,9,9,0]
4 행 : 출력의 4 행 인쇄
"-2ooa"#"~<.31^!?:-1o"*
ooa"#"~< delete 0 (unnecessary value pushed), then print newline,"#"
-2 subtract two from value on top of stack (length)
" .31^!?:-1o"* print space until top of stack is 0, then change direction to up
스택: [0,9,0]
출력 ( *
공간을 나타냄) :
#########
# #
# input #
#*******
3 행 : 최종 출력 행 인쇄
"#"o1-:?!;02.>~a"#"oo
>~a"#"oo pop top of stack, print "#", newline
"#"o1-:?!;02. print "#" until top of stack is 0, then terminate
스택: [0,0]
산출:
#########
# #
# input #
# #
#########