ความท้าทายนี้คล้ายกับMeta Quine ของคุณหรือไม่
ควินเป็นโปรแกรมที่สร้างตัวเองบน STDOUT ความท้าทายนี้คือการสร้างโปรแกรม A ซึ่งเมื่อ run สร้างโปรแกรม B บน STDOUT โปรแกรม B เมื่อ run สร้างโปรแกรม A บน STDOUT โปรแกรม A และ B จะต้องเขียนด้วยภาษาเดียวกัน คำถามที่เชื่อมโยงมีข้อ จำกัด A! = B. นั่นดูง่ายเกินไป ดังนั้นสำหรับคำถามนี้เรายืนยันว่า A และ B เป็นโบราณวัตถุโดยใช้กฎต่อไปนี้:
- โปรแกรม A และ B ไม่สามารถใช้อักขระเดียวกันใด ๆ บันทึกสำหรับช่องว่างและตัวคั่นคำสั่งและอักขระเครื่องหมายวรรคตอน
- โปรแกรม A และ B ต้องประกอบด้วยอักขระอย่างน้อยหนึ่งตัวที่ไม่ใช่ช่องว่างหรือตัวคั่นคำสั่งหรืออักขระเครื่องหมายวรรคตอน
- สำหรับวัตถุประสงค์ของกฎ 1 และ 2 คำว่า 'ช่องว่าง' ไม่รวมสัญลักษณ์หรือลำดับของสัญลักษณ์ใด ๆ ที่เป็นคำสั่งตัวดำเนินการหรือสัญลักษณ์ที่ตีความ (เมื่อเทียบกับตัวคั่น) ดังนั้นในภาษาของช่องว่างไม่มีช่องว่าง
- ตัวคั่นข้อความสั่งเป็นองค์ประกอบประโยคตามแบบแผนที่ใช้ภายในภาษาเพื่อแยกข้อความ ซึ่งจะรวมถึงการขึ้นบรรทัดใหม่ในไพ ธ อนหรือเซมิโคลอนใน Java, perl หรือ C
- อักขระเครื่องหมายวรรคตอนเป็นอักขระ ASCII ซึ่งเป็นค่าช่องว่างหรือใน POSIX ชั้นเรียนตัวอักษรคำ (เช่นการขีดเส้นใต้ไม่ได้เป็นเครื่องหมายวรรคตอนเพื่อวัตถุประสงค์นี้) - คือจะกลับมาจริงและก็ไม่ได้
ispunct()
_
- โปรแกรม A เมื่อทำงานต้องสร้างโปรแกรม (โปรแกรม B) บน STDOUT ของมันซึ่งเมื่อทำงานในทางกลับกันจะสร้างโปรแกรม A
- โปรแกรม A และ B ต้องเป็นภาษาการเขียนโปรแกรมเดียวกัน
- ภาษาการเขียนโปรแกรมที่ใช้จะต้องเป็นภาษาการเขียนโปรแกรม นอกจากว่าคุณจะทำดีอย่างอื่นฉันจะแนะนำให้ทัวริงสมบูรณ์
- อย่างน้อยหนึ่งใน A และ B จะต้องดำเนินการอย่างน้อยหนึ่งคำสั่งภายในภาษา
นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดชนะคะแนนเป็นความยาวของโปรแกรม A เป็นไบต์ (เช่นความยาวของโปรแกรม B ไม่เกี่ยวข้อง)
A
และa
ถือว่า "อักขระ" แตกต่างกันหรือไม่