CJam 0.6.6 dev / GolfScript, 15 14 12 ไบต์
"0$p"0$~a:n;
ขอบคุณ @ jimmy23013 สำหรับการตีกอล์ฟ 2 ไบต์!
ส่วนที่เหลือที่จะปรับปรุง
การตรวจสอบ
เนื่องจากการส่งเกี่ยวข้องกับช่องว่างที่สำคัญจึงเป็นการดีที่สุดที่จะเปรียบเทียบ hexdumps
$ xxd -g 1 mpquine
0000000: 22 60 30 24 7e 22 30 24 7e 4e 4d 3a 6e 3b "`0$~"0$~NM:n;
$
$ cjam mpquine | tee quine.gs | xxd -g 1
0000000: 22 60 30 24 7e 22 60 30 24 7e 0a "`0$~"`0$~.
$ golfscript quine.gs | xxd -g 1
0000000: 22 60 30 24 7e 22 60 30 24 7e 0a "`0$~"`0$~.
$ cjam quine.gs | xxd -g 1
0000000: 22 60 30 24 7e 22 60 30 24 7e "`0$~"`0$~
$
$ golfscript mpquine | tee quine.cjam | xxd -g 1
0000000: 22 60 30 24 7e 22 60 30 24 7e "`0$~"`0$~
$ cjam quine.cjam | xxd -g 1
0000000: 22 60 30 24 7e 22 60 30 24 7e "`0$~"`0$~
$ golfscript quine.cjam | xxd -g 1
0000000: 22 60 30 24 7e 22 60 30 24 7e 0a "`0$~"`0$~.
CJam
CJam พิมพ์"`0$~"0$~
และป้อนบรรทัด ลองออนไลน์!
โปรแกรมที่สร้างขึ้นจะพิมพ์"`0$~"0$~
ด้วยการป้อนบรรทัดต่อท้ายใน GolfScript ( ลองออนไลน์! ) แต่ไม่มี linefeed ใน CJam ( ลองออนไลน์! )
metaquine ทำงานอย่างไร
"`0$~" e# Push that string on the stack.
0$~ e# Push a copy and evaluate it:
e# ` Inspect the string, pushing "\"`0$~\"".
e# 0$ Push a copy.
e# ~ Evaluate, pushing "`0$~".
e# Both "\"`0$~\"" and "`0$~" are now on the stack.
NM e# Push "\n" and "".
:n; e# Map print over the elements of "" (none) and pop the result.
e# "\"`0$~\"", "`0$~", and "\n" are now on the stack, and the
e# characters they represent will be printed implicitly.
วิธีการทำงานของควิน
"`0$~" # Push that string on the stack.
0$~ # As in CJam.
<LF> # Does nothing.
# "\"`0$~\"" and "`0$~" are now on the stack, and the characters
# they represent will be printed implicitly, plus a linefeed.
ซึ่งแตกต่างจาก GolfScript, CJam ไม่พิมพ์ linefeed ต่อท้ายโดยค่าเริ่มต้นดังนั้นนี่ไม่ใช่ quine ใน CJam
GolfScript
GolfScript พิมพ์ออก"`0$~"0$~
มาโดยไม่มีช่องว่างต่อท้าย ลองออนไลน์!
โปรแกรมที่สร้างขึ้นจะพิมพ์"`0$~"0$~
โดยไม่มีช่องว่างต่อท้ายใน CJam ( ลองออนไลน์! ) แต่ GolfScript ต่อท้ายตัวป้อนบรรทัด ( ลองออนไลน์! )
metaquine ทำงานอย่างไร
"`0$~"0$~ # As in CJam.
NM # Unrecognized token. Does nothing.
:n # Store the top of the stack – "`0$~" – in the variable n. n holds
# "\n" by default. When the program finishes, the interpreter
# prints n implicitly, usually resulting in a trailing linefeed.
# By redefining n, it will print "0$~" instead.
; # Pop the string from the stack so it won't be printed twice.
วิธีการทำงานของควิน
"`0$~"0$~ e# Works as in GolfScript.
ซึ่งแตกต่างจาก CJam GolfScript จะผนวก linefeed เข้ากับเนื้อหาของสแต็กดังนั้นนี่จึงไม่ใช่สิ่งที่ขาดไม่ได้ใน GolfScript