พื้นหลัง
ในฐานะที่เป็นประจำ PPCG ส่วนใหญ่จะรู้ว่าควินเป็นโปรแกรมที่ส่งออกซอร์สโค้ดของตัวเองเมื่อทำงาน; และระยะทางของ Levenshteinระหว่างสองสายคือจำนวนขั้นต่ำของการแทรกการลบและการแก้ไขที่จำเป็นในการเปลี่ยนหนึ่งสายเป็นอีกสายหนึ่ง ในความท้าทายนี้เราได้รวมแนวคิดทั้งสองไว้ใน "levenquine": โปรแกรมที่ส่งออกซอร์สโค้ดของตัวเอง แต่มีอินสแตนซ์หนึ่งของอักขระหนึ่งตัวที่แทรกลบหรือแทนที่ด้วยอักขระอื่น (กล่าวอีกนัยหนึ่งระยะทางของ Levenshtein ระหว่างโปรแกรมและผลลัพธ์คือ 1)
งาน
เขียน levenquine เพื่อให้ผลลัพธ์เป็น levenquine, ผลลัพธ์ของโปรแกรมนั้นเป็น levenquine, และอื่น ๆ นอกจากนี้ในบางจุดลำดับของการรันโปรแกรมซ้ำ ๆ , การรันเอาต์พุต, การรันเอาต์พุตของเอาต์พุต, ฯลฯ ในที่สุดจะต้องกลับมาที่โปรแกรมต้นฉบับ
มีข้อ จำกัด เพิ่มเติมหนึ่งข้อที่ทำให้สิ่งต่าง ๆ ยากขึ้น: จะต้องมีสองโปรแกรมที่แตกต่างกันบางแห่งในวงรอบนี้ซึ่งไม่มีตัวอักษรที่เหมือนกัน (ในคำอื่น ๆ ไม่มีตัวละครที่มีอยู่ในโปรแกรมหนึ่ง โปรแกรมของคุณจะต้องค่อยๆแปลงตัวเองเป็นชุดอักขระที่แตกต่างกันและกลับมาอีกครั้ง
หากคุณกำลังใช้ภาษาการเขียนโปรแกรมซึ่งไม่จำเป็นต้องมีสำเร็จรูปสำเร็จรูปที่ต้องการในโปรแกรมใด ๆ ที่สร้างผลลัพธ์ (เช่นมีเพียงวิธีเดียวในการเขียนprint
คำสั่งและไม่มีรูปแบบการส่งออกที่มีประโยชน์อื่น ๆ ) คุณอาจถือว่าสำเร็จรูปนั้นไม่มีอยู่จริง ของการพิจารณาว่าตัวละครสองตัวใดมีเหมือนกัน อย่างไรก็ตามคุณจะต้องนับจำนวนแผ่นเหล็กสำเร็จรูปเพื่อวัตถุประสงค์ในการกำหนดคุณสมบัติ Levenquine ของรหัส
ชี้แจง
- แต่ละ "โปรแกรม" ในรอบสามารถเป็นได้ทั้งโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบ พวกเขาไม่จำเป็นต้องเหมือนกันทุกคนเช่นบางโปรแกรมอาจเต็มและบางฟังก์ชั่นอาจเป็นได้
- ไม่ใช่โปรแกรมทั้งหมดในวัฏจักรจำเป็นต้องใช้เอาต์พุตในรูปแบบเดียวกัน ตัวอย่างเช่นบางคนสามารถส่งออกผ่านทางเอาท์พุทมาตรฐานและบางคนสามารถส่งออกผ่านข้อผิดพลาดมาตรฐาน
- โปรแกรมของคุณจะทำงานโดยไม่มีการป้อนข้อมูล (หรือในภาษาที่ต้องใช้อินพุทเพื่อทำอะไรเลยอินพุตที่ง่ายที่สุดที่เป็นไปได้)
- กฎควินที่เหมาะสมใช้; ถึงแม้ว่า Levenquine จะไม่ใช่ Quine จริง แต่คุณไม่สามารถทำอะไรที่ผิดกฎหมายเมื่อเขียน Quine ที่เหมาะสม โดยเฉพาะอย่างยิ่งโปรแกรม null จะไม่ส่งออกที่ถูกต้องจาก Levenquine ที่เหมาะสม (และไม่สามารถเป็นส่วนหนึ่งของวัฏจักรของคุณ)
- ข้อ จำกัด Levenquine ถูกวัดในแง่ของตัวละครมากกว่าไบต์ (เช่น
ê
เป็นตัวละครตัวหนึ่งแม้ว่าแหล่งที่มาจะถูกเข้ารหัสใน UTF-8) ข้อ จำกัด ที่ไม่มีตัวอักษรที่พบบ่อยนอกจากนี้ยังวัดในแง่ของตัวละคร อย่างไรก็ตามเงื่อนไขชัยชนะจะนับเป็นไบต์
เงื่อนไขชัยชนะ
โปรดส่งอย่างน้อยสามโปรแกรมต่อไปนี้จากรอบการทำงาน: โปรแกรมที่สั้นที่สุด (วัดเป็นไบต์); และสองโปรแกรมจากวงรอบที่ไม่มีตัวอักษรเหมือนกัน อาจเป็นไปได้ว่าทั้งสองอย่างนี้เหมือนกันและเป็นไปได้ว่าทั้งสามคนนั้นแตกต่างกัน คะแนนจะขึ้นอยู่กับความยาวเป็นไบต์ของโปรแกรมสั้นกับสั้นเป็นดีกว่าจึงทำให้นี้ชนิดของรหัสกอล์ฟการแข่งขัน