8
เครื่องกำเนิด Quine ทั่วไป
ความท้าทาย ในความท้าทายนี้คุณระบุภาษาต้นฉบับ Sและภาษาเป้าหมาย Tงานของคุณคือการเขียนโปรแกรมดังต่อไปนี้ในภาษาที่P Sถ้าเป็นโปรแกรมที่ถูกต้องQในภาษาที่Tจะได้รับเป็น input เพื่อPมันจะได้ผลลัพธ์เป็นโปรแกรมที่ถูกต้องRในภาษาที่Tซึ่งจะเข้าไม่ได้และเอาท์พุทQ(R)ที่เป็นโปรแกรมที่นำไปใช้กับรหัสที่มาของQ นอกจากนี้คุณควรจะนำเสนอในคำตอบของคุณโปรแกรมตัวอย่างขี้ปะติ๋ว(น่าสนใจมากขึ้นดีกว่าแม้ว่าคุณแต้มสำหรับเรื่องนี้) โปรแกรมส่งผลและการส่งออกของ นี่คือรหัสกอล์ฟดังนั้นรหัสที่สั้นที่สุดสำหรับการชนะRQRRP กล่าวอีกนัยหนึ่งนี่เป็นความท้าทายเกี่ยวกับการเขียน "ตัวสร้างควินสากล" ซึ่งสามารถสร้างประเภททั่วไปได้ตามอำเภอใจ ชี้แจง ภาษาต้นทางและเป้าหมายของคุณอาจเหมือนกัน โปรแกรมที่Pควรใช้เวลาหนึ่งสตริงเป็น input (จาก STDIN หรือเทียบเท่า) และสตริงหนึ่ง output (เพื่อ STDOUT หรือเทียบเท่า) Rเป็นโปรแกรมควรส่งออกทุก โปรแกรมอินพุตQควรแปลงสตริงเป็นสตริงอื่น แต่รูปแบบมีความยืดหยุ่นมากขึ้น: สามารถเป็นฟังก์ชั่นแบบสตริงต่อสตริง, โค้ดขนาดเล็กที่ปรับเปลี่ยนตัวแปรด้วยชื่อที่แน่นอน, สนิปเพตที่ปรับเปลี่ยนสแต็คข้อมูลหากภาษาเป้าหมายของคุณ มีหนึ่งรายการและอื่น ๆ คุณสามารถ จำกัด รูปแบบของรายการเพิ่มเติมQโดยระบุว่าตัวอย่างเช่นพวกเขาอาจไม่มีความคิดเห็นใด ๆ อย่างไรก็ตามคุณต้องสามารถใช้ฟังก์ชัน string-to-string ที่คำนวณได้ใด ๆ เป็นโปรแกรมอินพุตQและคุณต้องระบุอย่างชัดเจนถึงวิธีการทำงานของฟังก์ชันและข้อ จำกัด เพิ่มเติมที่คุณมีต่อฟังก์ชันเหล่านั้น โปรแกรมเอาต์พุตRควรเป็น quine (ทั่วไป) ดังนั้นจึงต้องไม่อ่านอินพุตใด ๆ (อินพุตของผู้ใช้ไฟล์ …