Vitsy, 10 27 ไบต์
'rddd++&"rdd8++a[v}v1-D);].
หาก:
ได้รับอนุญาตฉันสามารถย่อให้เหลือ 11 ไบต์ :(
คำอธิบาย:
'rddd++&"rdd8++a[v}v1-D);].
' Capture all instructions as a string until encountering
' again, looping if necessary.
r Reverse the current stack (output is top-down).
ddd++ Push char literal ' to the stack.
& Push a new stack to the stack stack.
" Same as ', but " specific.
r Reverse the current stack.
dd8++ Push char literal " to the stack.
a Push 10 to the stack.
[ ] Loop forever.
v Capture the top value as a variable.
} Take the bottom item of the stack and put it on the top.
v Dump the variable to the stack.
1- Subtract 1.
D Duplicate the top item.
); Pop n; if n is 0, exit the loop.
a[v v1-D);] This is a makeshift for loop with 10 iterations.
. Pop the top stack as n, and the second stack as o.
Write a file called "n" with the contents of "o".
สแต็คทั้งสองจะเหมือนกันในตอนท้าย ในบางรุ่น Java นี้อาจโยนFileNotFoundException
เนื่องจากการใช้งานที่แตกต่างกันของFileInputStream
คลาส
คำตอบก่อนหน้าก่อนที่จะแก้ไข:
&'rddd++}.
คำอธิบาย:
& Push a new stack to the stack stack.
'rddd++ Modified standard quine.
} Move the ' to the right place.
. Pop the top stack as n, and the second stack as o. Write a file called
"n" with the contents of "o". (Quine name, no content)
เพราะฉันอาจเช่นกันนี่คือแผนภาพของขั้นตอนที่เกิดขึ้นภายในสแต็ก (แต่ละสแต็กแสดงโดย[]
):
Initial state: [[]]
& [[], []]
Push a new stack to the stack stack.
' [[], ["r", "d", "d", "d", "+", "+", "}", ".", "&"]]
This stack state occurs because ' will loop around the line
until finding the next '.
r [[], ["&", ".", "}", "+", "+", "d", "d", "d", "r"]]
Reverses the top (last) stack.
ddd [[], ["&", ".", "}", "+", "+", "d", "d", "d", "r", 13, 13, 13]
Push thirteen thrice.
++ [[], ["&", ".", "}", "+", "+", "d", "d", "d", "r", "'"]
Because char ' is 39 = 13 + 13 + 13.
} [[], [".", "}", "+", "+", "d", "d", "d", "r", "'", "&"]]
Takes the bottom item, then puts it on the top.
. []
Writes a file with content from the second-to-top stack and the
name as the concatenation of all elements in the top stack,
with top member priority (backwards from my representation).
จริง ๆ แล้วฉันไม่แน่ใจว่ามันทำงานอย่างไร การเปลี่ยนแปลงนาทีทำให้สิ่งนี้หยุด ตัวอย่างเช่นการวางตำแหน่ง&
ในตำแหน่งอื่น ๆ ควรใช้งานได้เช่นกัน แต่มันทำให้ClassCastException
s, IOException
s และArrayOutOfBoundsException
s ขึ้นอยู่กับตำแหน่งที่คุณวาง ฉันอาจต้องแก้ไขข้อผิดพลาดบางอย่าง