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 - ขีด จำกัด ไบต์)