7 , 23 ตัวอักษร, 9 ไบต์
54340045141332401057403
ลองออนไลน์!
นี่เป็นความท้าทายที่ค่อนข้างยากในภาษาที่มีตัวเลขทั้งหมด แต่ฉันจัดการ ...
นี่เป็นเพียง 9 ไบต์ในการเข้ารหัส 7 (พูดอย่างเคร่งครัดมันคือ8⅜ไบต์ (23 ×⅜ - ¼เพราะสองตัวสุดท้ายต่อท้าย 1 บิตสามารถละเว้นได้) แต่เป็นครั้งแรกที่ความต้องการของ PPCG ในการปัดเศษจำนวนไบต์ทั้งหมดเป็นข้อได้เปรียบเพราะหมายความว่า ต่อท้าย 1 บิตเป็นสิ่งจำเป็นและไม่ถูกห้ามโดยคำถาม) การถ่ายโอนข้อมูล hex แบบย้อนกลับได้
00000000: b1c0 2530 b6a0 22f8 1f ..%0.."..
ความท้าทายหลักของการเขียนโปรแกรมนี้ใน 7 คือการเล่นกอล์ฟให้ต่ำกว่า 10 ไบต์ (เช่นการเขียน 7 โดยไม่ต้องใช้0
หรือ1
ยากมาก) ซึ่งใช้โครงสร้างเดียวกันกับโปรแกรม "Hello world" มาตรฐาน:
5434004514133240105 7 403
5434004514133240105 คำสั่ง 0-5 ผนวกตัวอักษรไปยังพื้นที่ข้อมูล
7 เริ่มส่วนใหม่ของพื้นที่ข้อมูล
อีก 403 ตัวอักษรต่อท้ายพื้นที่ข้อมูล
{implicit: eval ส่วนสุดท้ายเป็นคำสั่ง}
4 swap ส่วนที่ 1 และที่ 2 พร้อมส่วนที่ว่างระหว่าง
6 สร้างคำสั่งที่จะสร้าง เอาต์พุต1 ส่วนที่
3 (+ เอฟเฟกต์อื่น ๆ ที่เราไม่สนใจ)
ในคำอื่น ๆ เราเริ่มต้นด้วยการสร้างสองส่วนของพื้นที่ข้อมูล; เรามีสองตัวอักษรแต่ละตัวจะผลักลำดับของคำสั่งไปที่นั่น ส่วนที่สอง (พวกเขากำลังผลักสไตล์สแต็กดังนั้นก่อนกด = ป๊อปสุดท้าย) เป็นลำดับโดยพลการของคำสั่ง แต่ถูกผลักโดยใช้ลำดับคำสั่ง5434004514133240105
(ดังนั้นการผลิตลำดับข้อมูล5434664574733246765
เมื่อพูดถึง 7 ในข้อความฉันปกติใช้ตัวอักษรปกติ สำหรับคำสั่งที่ผลักดันตัวอักษรและตัวหนาสำหรับตัวอักษรผลลัพธ์ที่สอดคล้องกัน) ส่วนแรกคือการผลักดันโดยใช้ลำดับคำสั่งผลิต403
463
จากนั้นส่วนแรกจะถูกคัดลอกกลับไปที่โปรแกรม (พฤติกรรมโดยนัยของ 7)
463
ประกอบด้วยตอนนี้ (ตัวหนา) คำสั่งที่ทำอะไรบางอย่างทันทีมากกว่า (ไม่ใช่ตัวหนา) คำสั่งที่เพิ่งผลักดันตัวอักษร 4
จัดเรียงส่วนใหม่เพื่อรับ "สตริงตัวอักษร" ของเราลงในส่วนแรก จากนั้น0
การดำเนินการที่ 7 เป็นที่รู้จักมากที่สุดคือ: การแบ่งส่วนของพื้นที่ข้อมูลและสร้างลำดับคำสั่งที่น่าจะสร้างขึ้นใหม่ ในกรณีที่ลำดับของคำสั่งดั้งเดิมทั้งหมด0
- 5
นี่เป็นความถูกต้อง 100% (ไม่น่าแปลกใจที่คำสั่งเหล่านั้นส่งข้อมูลอย่างหมดจดและทิ้งหลักฐานที่ชัดเจนว่าพวกเขาทำอะไร) และเราได้รับลำดับเดิม5434004514133240105
กลับมา ในที่สุด3
พิมพ์มัน
สิ่งที่เหลืออยู่ให้ดูตรงนี้คือการเข้ารหัสของสตริง นี่เป็นภาษาเฉพาะโดเมนของตนเอง:
5434004514133240105
5 change encoding: 6 bits per character
43 select character set: digits and common symbols
40 '9'
04 space
51 select character set: uppercase letters
4133240105 'B' 'Y' 'T' 'E' 'S'
(ไม่มีชุดอักขระ "เลือก: ตัวอักษรตัวเล็ก" ในชุดอักขระ "ตัวเลขและสัญลักษณ์ทั่วไป" - คุณต้องผ่านชุดอักขระอื่นก่อน - ดังนั้นฉันต้องใช้ตัวพิมพ์ใหญ่เพื่อเล่นกอล์ฟสั้นพอที่จะพอดีกับประสิทธิภาพ 10 - ขีด จำกัด ไบต์)