Cyclic Polyglot Challenge
นี่คือตำรวจด้าย คุณสามารถค้นหาหัวข้อโจรที่นี่
Cyclic Polyglot
โพลีกล็อตแบบวัฏจักรขององค์ประกอบ N เป็นโปรแกรมที่สมบูรณ์ที่สามารถเรียกใช้ในภาษาต่าง ๆ N ในแต่ละภาษาเมื่อโปรแกรมรันโดยไม่มีอินพุต (อาจมีข้อยกเว้นนี้ ) ควรพิมพ์ชื่อของภาษาไปยัง STDOUT โดยเฉพาะถ้าโปรแกรมทำงานในภาษา Kth ควรพิมพ์ชื่อของภาษา (K + 1) th หากโปรแกรมทำงานในภาษา Nth (นั่นคือภาษาสุดท้ายในวงจรองค์ประกอบ N) ก็ควรพิมพ์ชื่อของภาษาแรก
ตัวอย่างอาจมีประโยชน์
a = [[ v = 7, puts('Befunge') ]]
__END__
= print("Ruby")
-->*+:292*++,,@
--3 9
--7 *
--^,:-5<
การรันโปรแกรมนี้ด้วย Lua จะพิมพ์สตริง "Ruby" การรันโปรแกรมนี้ใน Ruby จะพิมพ์สตริง "Befunge" การรันโปรแกรมนี้ใน Befunge จะพิมพ์สตริง "Lua" เพื่อให้ครบวงจร โปรแกรมนี้ประกอบด้วย 3 รอบประกอบด้วย Lua, Ruby และ Befunge
ภาษาเดียวกันไม่สามารถปรากฏสองรอบได้และรุ่นภาษาอื่นที่ต่างกัน (เช่น Python 2 และ Python 3) ไม่สามารถปรากฏในรอบเดียวกันกับอีกภาษาหนึ่งได้
ตำรวจ
ความท้าทายของคุณคือการเขียน N-cyclic polyglot โดยที่ N อย่างน้อย 2 จากนั้นคุณต้องเพิ่มแทนที่และลบจำนวนอักขระบางตัวลงในโปรแกรมเพื่อสร้าง M-cyclic polyglot โดยที่ M นั้นมากกว่า M อย่างเคร่งครัด จากนั้นคุณควรโพสต์รูปหลายเหลี่ยมแบบสั้น N-cyclic (และภาษาที่ใช้) รวมถึงจำนวนตัวอักษรที่คุณเปลี่ยนเพื่อสร้างรูปหลายเหลี่ยมที่ยาวขึ้น คะแนนของคุณคือ N จำนวนภาษาในรอบที่สั้นลงของคุณ
พวกโจรจะพยายามระบุวัฏจักรของคุณให้นานขึ้น หากหลังจากเจ็ดวันไม่มีใครประสบความสำเร็จในการแก้ปัญหาของคุณคุณควรแก้ไขคำตอบของคุณโดยบอกว่าปลอดภัย คุณควรโพสต์รูปหลายภาษา M-cyclic อีกต่อไปในเวลานี้
โจร
ด้วยโพลีกล็อต N-cyclic ของตำรวจและจำนวนตัวอักษรที่เพิ่มเข้ามาเพื่อสร้างวงจรโพลิกล็อตที่มีขนาดใหญ่ขึ้นเป้าหมายของคุณคือสร้างวงจรที่ใหญ่กว่านั้น หากคุณสามารถสร้างวงจรที่ยาวขึ้นได้โดยการเพิ่มลบหรือแทนที่ตัวละครให้มากที่สุดเท่าที่ตำรวจทำหรือน้อยกว่าตัวละครคุณก็จะแตกโพลิกล็อตของตำรวจ คะแนนของคุณคือความยาวของรอบใหม่ที่คุณสร้างขึ้น รูปหลายเหลี่ยมใหม่ของคุณไม่จำเป็นต้องเหมือนหรือคล้ายกับรูปหลายเหลี่ยมลับของตำรวจ มันจะต้องมีขนาดใหญ่กว่าที่มีอยู่
ทางออกของคุณอาจแตก หากโจรอีกคนเข้ามาและก่อให้เกิดวัฏจักรที่ยาวกว่าของคุณอย่างเคร่งครัดเริ่มต้นจากพูดได้หลายภาษาของตำรวจคนเดียวกันพวกเขาขโมยคะแนนของคุณ
ภาษาการเขียนโปรแกรมที่ถูกต้อง
เนื่องจากความท้าทายนี้ทางอ้อมเกี่ยวข้องกับการคาดเดาภาษาการเขียนโปรแกรมที่ใช้โดยผู้เข้าร่วมคนอื่นคำจำกัดความของภาษาการเขียนโปรแกรมสำหรับจุดประสงค์ของการท้าทายนี้จะเข้มงวดกว่าคำจำกัดความเล็กน้อยเพียงเล็กน้อย ภาษาการเขียนโปรแกรมที่ใช้ในการท้าทายนี้ต้องเป็นไปตามเงื่อนไขต่อไปนี้ทั้งหมด
- ภาษาที่จะต้องตอบสนองความปกติ PPCG ต้องใช้สำหรับการเขียนโปรแกรมภาษา
- ภาษาจะต้องมีทั้งบทความวิกิพีเดียมีบทความ Esolangsหรือบทความ Rosetta รหัสในช่วงเวลาที่ท้าทายนี้ถูกโพสต์
- ภาษาต้องมีล่ามหรือคอมไพเลอร์ที่พร้อมใช้งานได้อย่างอิสระ
หมายเหตุสุดท้าย
- รหัสที่คุณเขียนควรเป็นโปรแกรมแบบสแตนด์อโลนในทุกภาษาที่มีวัตถุประสงค์เพื่อใช้งานฟังก์ชันหรือตัวอย่างโค้ดไม่ได้รับอนุญาต
- โปรแกรมของคุณจะไม่ได้รับการป้อนผ่าน STDIN ในทำนองเดียวกันโปรแกรมของคุณจะไม่พิมพ์อะไรไปยัง STDERR
- คะแนนของตำรวจคือจำนวนภาษาในวงรอบของหลายภาษาที่โพสต์ ตำรวจควรโพสต์ภาษาที่โพลิกอนที่โพสต์นั้นทำงานอย่างถูกต้องรวมถึงจำนวนตัวอักษรที่พวกเขาเพิ่มเข้าไปเพื่อสร้างโพลิกล็อตที่ยาวขึ้น พวกเขาจะไม่รับผิดชอบในการโพสต์ภาษาอีกต่อไปภาษาที่พูดได้หลายภาษาที่ซ่อนอยู่จะทำงานจนกว่าคำตอบของพวกเขาจะปลอดภัย
- คะแนนของ robber คือจำนวนภาษาที่ polyglot ที่แก้ไขทำงานเช่นเดียวกับตำรวจ robber ควรโพสต์รายการภาษาที่ polyglot ทำงานอย่างถูกต้อง
- จำนวนตัวอักษรที่เปลี่ยนแปลงควรคำนวณในระยะทาง Levenshtein