> <> , 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
การสร้างภาพของฉันของสแต็คจะตามออกของการป้อนข้อมูล > <> เป็นภาษาสองมิติดังนั้นโปรดสังเกตว่าตัวชี้กำลังเคลื่อนที่ระหว่างบรรทัดใดขณะที่มันรันโค้ดที่อยู่ด้านล่าง (ในรหัส<>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:ตั้งค่าตัวเองเพื่อพิมพ์บรรทัดที่สี่และห้า
.>";^"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:พิมพ์เอาต์พุตบรรทัดที่สี่
"-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 #
# #
#########