อย่างที่เรารู้ quine เป็นโปรแกรมที่ให้ผลลัพธ์ซอร์สโค้ดของมันเอง อย่างไรก็ตามอาจเป็นไปได้ที่จะเขียนโปรแกรมที่ส่งออกเป็นโปรแกรมอื่นที่แตกต่างกันซึ่งจะส่งออกโปรแกรมแรกอีกครั้ง ตัวอย่างเช่นโปรแกรม Python 2
x = '''x = {}
print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3'''
print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3
จะเมื่อส่งออกข้อความต่อไปนี้:
print """x = '''x = {}
print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3'''
print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3"""
เมื่อรันเป็นโปรแกรม Python จะเป็นการส่งออกรหัสต้นฉบับอีกครั้ง นี้เรียกว่าควิน iterating เพราะคุณต้องใช้มันสองครั้งที่จะได้รับกลับมารหัสเดิมเราบอกว่ามันมีระยะเวลา 2 แต่แน่นอนช่วงเวลาที่สูงขึ้นเป็นไปได้มาก
ความท้าทายของคุณคือการเขียนควินวนซ้ำโดยใช้ระยะเวลานานที่สุดเท่าที่จะทำได้ใน100 ไบต์หรือน้อยกว่าในภาษาที่คุณเลือก (โปรดทราบว่าตัวอย่างของฉันด้านบนไม่ตรงกับข้อกำหนดนี้เนื่องจากมีขนาด 119 ไบต์รวมถึงการขึ้นบรรทัดใหม่)
โปรดทราบกฎและคำชี้แจงต่อไปนี้:
- ใช้กฎ quine ปกติเช่นโปรแกรมของคุณไม่สามารถใช้คุณสมบัติภาษาที่อนุญาตให้เข้าถึงซอร์สโค้ดของตัวเองได้โดยตรง
- เอาท์พุทซ้ำแล้วซ้ำอีกจะต้องวนกลับไปที่รหัสเดิมของคุณและคุณจะต้องมีการสาธิตหรือพิสูจน์ว่ามันจะ
- คุณต้องรวมคำอธิบายว่าทำไมรอบจึงยาวเท่าที่คุณพูด สิ่งนี้ไม่จำเป็นต้องอยู่ในระดับการพิสูจน์ทางคณิตศาสตร์ แต่ควรโน้มน้าวใจคนที่คุ้นเคยกับภาษาของคุณ (กฎนี้อยู่ที่นี่เพราะฉันคาดหวังคำตอบบางคำให้มีจำนวนมากมาก)
- มันเป็นการดีที่จะพูดอะไรบางอย่างเช่น "การวนซ้ำอย่างน้อย 1,000,000 ครั้ง" แทนที่จะให้จำนวนที่แน่นอนตราบใดที่คุณสามารถพิสูจน์ได้ว่ามันมีความยาวอย่างน้อย ในกรณีนี้คะแนนของคุณจะเป็น 1,000,000 มิฉะนั้นคะแนนของคุณคือระยะเวลาที่ควินินของคุณ
- ขีด จำกัด 100 ไบต์จะใช้กับโปรแกรมเริ่มต้นของคุณเท่านั้น - โปรแกรมที่เอาต์พุตสามารถมีความยาวได้มากกว่า แต่แน่นอนว่าในที่สุดพวกเขาจะต้องกลับลงมาที่ 100 ไบต์เพื่อเอาท์พุทโค้ดต้นฉบับของคุณ
- คุณสามารถสมมติว่าเครื่องของคุณมี RAM ที่ไม่มีที่สิ้นสุดและรันไทม์ที่ไม่มีที่สิ้นสุด แต่คุณไม่สามารถสมมติประเภทข้อมูลที่มีความแม่นยำไม่ จำกัด (เช่นจำนวนเต็ม) หากภาษาของคุณไม่มี คุณสามารถสมมติว่าไม่มีการจำกัดความยาวของอินพุต parser ที่คุณสามารถจัดการได้
- คะแนนสูงสุดชนะ
โปรดทราบ: มีความท้าทายที่เรียกว่าQuit Whining; เริ่ม Quiningที่เกี่ยวข้องกับการวนซ้ำแล้วซ้ำอีก อย่างไรก็ตามนอกเหนือจากการใช้แนวคิดเดียวกันสิ่งเหล่านี้เป็นความท้าทายที่แตกต่างกันโดยสิ้นเชิง ส่วนอีกอันหนึ่งเป็นรหัสกอล์ฟในขณะที่อันนี้ (โดยเจตนา!) เป็นปัญหาของบีเวอร์ที่ยุ่งในการปลอมตัว เทคนิคที่จำเป็นในการสร้างคำตอบที่ดีสำหรับคำถามนี้น่าจะแตกต่างจากสิ่งที่จำเป็นในการตอบคำถามอื่น ๆ และนี่เป็นอย่างมากจากการออกแบบ