7 , 10 ไบต์, 27 ตัวอักษร
115160723426754314105574033
ลองออนไลน์!
การนำเสนอที่บรรจุของโปรแกรมนี้บนดิสก์คือ ( xxd
รูปแบบ):
00000000: 269c 3a71 6f63 308b 7c0d &.:qoc0.|.
คำอธิบาย
เราเคยเห็นลำดับของตัวเลขนี้มาก่อนในAutomate Saving the Worldซึ่งเป็นเรื่องเกี่ยวกับการพิมพ์ตัวเลขตามช่วงเวลาปกติทำให้น่าสนใจผ่านการใช้ภาษาเก่ามาก ภาษาที่ใหม่กว่ามากสามารถมีการบิดของตัวเองที่ทำให้ความท้าทายนี้น่าสนใจ(ใช่ย่อหน้านี้และในความเป็นจริงเหตุผลที่ฉันเริ่มเขียนคำตอบนี้เป็นเพียงวิธีที่จะได้รับความท้าทายที่เกี่ยวข้องทั้งหมดเพื่อแสดงร่วมกันในแถบด้านข้างได้อย่างมีประสิทธิภาพโดยปกติผู้คนจะใช้ความคิดเห็น แต่ฉันไม่มีตัวแทนเพียงพอ .)
สิ่งแรกที่ควรทราบคือ 7 นั้นทำมาจากตัวเลขทั้งหมดดังนั้นการไปที่โบนัสที่นี่จึงไม่น่าจะเกิดขึ้นได้ (แม้ว่าคุณจะมองว่าโปรแกรมเป็นลำดับของออคเต็ต ดังนั้นคุณสามารถรับโบนัสได้ในกรณีนั้น) สิ่งต่อไปที่ควรทราบคือ 7 มีคำสั่งเพื่อสร้างลำดับคำสั่งที่น่าจะสร้างข้อมูลเฉพาะชิ้นใหม่ขึ้นมา ดังนั้นเราสามารถตีความตัวเลขที่หายไป4815162342
เป็นส่วนหนึ่งของโปรแกรม 7 ตัวได้หรือไม่?
คำตอบคือ "ไม่มาก" ส่วนที่เป็นปัญหามากที่สุดคือหมายเลขที่สอง, 8
. 7 โปรแกรมเขียนเป็นเลขฐานแปด ไม่มีหมายเลขดังกล่าวเป็น 8 ดังนั้นจุดเริ่มต้นของสตริงจะต้องถูกพิมพ์แตกต่างกัน
ฐานของโปรแกรมจึงขึ้นอยู่กับโปรแกรม 7 "Hello world":
5431410557403
543141055 string literal
7 separate data from code
4 rearrange stack: {program's source}, empty element, {literal}
0 escape {the literal}, appending it to {the empty element}
3 output {the escaped literal}, pop {the program's source}
ด้วยการหลีกเลี่ยงการเป็นตัวอักษรในภาษาเฉพาะโดเมนที่ตีความดังนี้:
5 output format: US-TTY using pairs of digits in the string
43 select character set: digits and common symbols
14 "4"
10 "8"
55 forget the set output format
หลังจากสิ่งนี้มาเป็นพิเศษ3
ซึ่งจะส่งผลให้องค์ประกอบสแต็กที่เหลืออยู่ (และออกจากเนื่องจากกองที่เหลือไม่เพียงพอ) องค์ประกอบนั้นถูกระบุไว้ที่จุดเริ่มต้นของโปรแกรมและเพื่อหลีกเลี่ยงการไม่ตรงกัน6
(ซึ่งทำงานได้เล็กน้อยเหมือนวงเล็บปิด) เราสร้างมันโดยใช้รหัสแทนที่จะเขียนมันเป็นข้อมูลโดยตรง (โปรดทราบว่ามี7
อักขระสองนัยในตอนเริ่มต้นโปรแกรมซึ่งมีความเกี่ยวข้องที่นี่):
{77}115160723426
7 empty stack element
7 11516 append "1151"
0 append "6"
723246 append "2324"
ที่ผลิตตามตัวอักษรต่อไปนี้:
115162324
1 set output format: literally as octal
15162324 "15162324"
ซึ่งได้รับการพิมพ์ออกมา