TovTovTov (การกลายพันธุ์ของไก่ ): 810147050 ไบต์
อธิบายไว้ด้านล่างนี้เป็นวิธีแก้ไขปัญหาที่แนะนำสองข้อ: หนึ่งวิธีแก้ปัญหาอย่างเต็มรูปแบบสำหรับคำถามที่ต้องใช้จำนวนมากไบต์และวิธีแก้ปัญหาบางส่วนที่สอง(การแก้เฉพาะส่วนN + NและN * Nต้องการเพียง 484 ไบต์) ชุดของเทคนิคที่ยอดเยี่ยม! :)
1. โซลูชันเต็มรูปแบบ (810147050 ไบต์)
ใช้TovTovTov(TOV='hi',SEP=',')
ในTOV
องค์ประกอบที่มีภูมิคุ้มกันที่จะทำซ้ำตัวละครในสถานที่ (ทั้ง"hihihi"
และ"hhiihhiihhii"
มีสาม"hi"
ในพวกเขาและทุกคนTovTovTov
ใส่ใจเกี่ยวกับวิธีการหลายTOV
s ปรากฏระหว่างSEP
s)
ถ้าเราใช้SEP=', '
โปรแกรมทั้งหมดจะมีภูมิคุ้มกันต่อการซ้ำซ้อนของอักขระ (ซึ่งเจ๋ง แต่จะไม่แก้คำถาม) SEP=','
ดังนั้นเราจึงใช้
ดังนั้นโปรแกรม"hihihi,hi"
ตัวอย่างเช่นรวบรวมไป ints อาร์เรย์[3,1]
ขณะ"hhiihhiihhii,,hhii"
ที่คอมไพล์[3,0,1]
และการ"hhiihhiihhii,,hhii"
[3,0,0,1]
ซึ่งหมายความว่าคำสั่งนั้นจะไม่เปลี่ยนความหมายหลังจากทำซ้ำ แต่ความยาวโดยรวมจะเปลี่ยนไปด้วยการทำสำเนาอักขระ วิธีการแก้ปัญหาด้านล่างแบบสอบถามความยาวของโปรแกรมและใช้สิ่งนี้ในการตัดสินใจว่าจะพิมพ์N+N
, หรือN*N
N^N
วิธีการแก้ปัญหาเต็มแนะนำเป็นอาร์เรย์ ints คือ: [6, 12, 9, 18, 9, 142, 11, 38, 8, 9, 260, 11, 73, 8, 22, 75, 7, 10, 14, 3, 1, 22, 24, 18, 15, 8, 10, 16, 3, 1, 22, 24, 18, 15, 8, 10, 45, 16, 7, 22, 3, 1, 22, 24, 18, 15, 8, 22, 3, 1, 22, 24, 18, 15, 8, 25, 3, 1, 22, 24, 18, 15, 8, 48, 3, 1, 22, 24, 18, 15, 8, 277, 3, 1, 22, 24, 18, 15, 8, 3146, 3, 1, 22, 24, 18, 15, 8, 46677, 3, 1, 22, 24, 18, 15, 8, 823564, 3, 1, 22, 24, 18, 15, 8, 16777237, 3, 1, 22, 24, 18, 15, 8, 387420510, 3, 1, 22, 24, 18, 15, 8]
ในฐานะที่เป็นสตริงมันเป็นโปรแกรมที่ค่อนข้างยาวประกอบด้วย 810147050 ตัวอักษรเริ่มต้นด้วย:
hihihihihihi,hihihihihihihihihihihihi,hihihihihihihihihi,hihihihihihihihihihihihihihihihihihi,hihihihihihihihihi,hihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihih...
2. การแก้ปัญหาเฉพาะส่วนของ N + N และ N * N (484 ไบต์)
การใช้TovTovTov(TOV='1',SEP=', ')
งานคราวนี้SEP
s มีภูมิคุ้มกันต่อการทำซ้ำ ( ",, "
ยังมีเพียงหนึ่ง", "
ในนั้น) ดังนั้นทางออกที่แนะนำต่อไปนี้จะมี 33 คำสั่งในนั้นเสมอแม้หลังจากการทำสำเนาตัวละคร:
1111, 111111111111111111111111111111111111111111111111, 1111111111, 1111111111, 1111111111, 111111, 111111111111, 111111111, 11111111111111, 111, 1, 1111111111111111111111, 111111111111111111111111, 111111111111111111, 111111111111111, 11111111, 111111111111, 1111111111111111, 111111111111111, 1111111111111111111111, 111111111111111111111111111111111111, 11, 1111111111111111111111111111, 111111, 111, 111111, 11111111111, 111111111111111111111111111, 1111, 1, 11111111, 1, 11111111
อาร์เรย์ int ที่สอดคล้องกัน (จำนวนTOV
s ( 1
s) ในแต่ละคำสั่ง 33 ข้างต้น) เป็นดังนี้:[4,48,10,10,10,6,12,9,14,3,1,22,24,18,15,8,12,16,15,22,36,2,28,6,3,6,11,27,4,1,8,1,8]
การทำซ้ำอักขระในผลลัพธ์จะมีรายการคำสั่งที่แตกต่างกัน 33 รายการ:
[8,96,20,20,20,12,24,18,28,6,2,44,48,36,30,16,24,32,30,44,72,4,56,12,6,12,22,54,8,2,16,2,16]
ints เดิมอาร์เรย์ (ที่คำนวณN + N ) ได้รับการออกแบบอย่างระมัดระวังเพื่อที่ว่าหลังจากคำสั่งเปลี่ยนความหมายของโปรแกรมยังคงทำให้รู้สึก แต่คำนวณN * N ตัวอย่างเช่นตัวแรก4
(ที่TovTovTov
เข้าใจว่าเป็น "ปฏิบัติต่อ op ถัดไปเป็นรหัส ascii เพื่อแปลงเป็นตัวอักษร") การเปลี่ยนแปลงหลังจากการทำสำเนาตัวละคร8
เป็นซึ่งเป็นคำสั่งที่แตกต่างกันโดยสิ้นเชิง ("เปลี่ยนเคาน์เตอร์โปรแกรมเป็นค่าแรกที่ผุด สแต็คถ้าค่าที่ปรากฏขึ้นทันทีหลังจากนั้นเป็นจริง ")