Cyclic Polyglot Challenge (ตำรวจ)


11

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 ของตำรวจและจำนวนตัวอักษรที่เพิ่มเข้ามาเพื่อสร้างวงจรโพลิกล็อตที่มีขนาดใหญ่ขึ้นเป้าหมายของคุณคือสร้างวงจรที่ใหญ่กว่านั้น หากคุณสามารถสร้างวงจรที่ยาวขึ้นได้โดยการเพิ่มลบหรือแทนที่ตัวละครให้มากที่สุดเท่าที่ตำรวจทำหรือน้อยกว่าตัวละครคุณก็จะแตกโพลิกล็อตของตำรวจ คะแนนของคุณคือความยาวของรอบใหม่ที่คุณสร้างขึ้น รูปหลายเหลี่ยมใหม่ของคุณไม่จำเป็นต้องเหมือนหรือคล้ายกับรูปหลายเหลี่ยมลับของตำรวจ มันจะต้องมีขนาดใหญ่กว่าที่มีอยู่

ทางออกของคุณอาจแตก หากโจรอีกคนเข้ามาและก่อให้เกิดวัฏจักรที่ยาวกว่าของคุณอย่างเคร่งครัดเริ่มต้นจากพูดได้หลายภาษาของตำรวจคนเดียวกันพวกเขาขโมยคะแนนของคุณ

ภาษาการเขียนโปรแกรมที่ถูกต้อง

เนื่องจากความท้าทายนี้ทางอ้อมเกี่ยวข้องกับการคาดเดาภาษาการเขียนโปรแกรมที่ใช้โดยผู้เข้าร่วมคนอื่นคำจำกัดความของภาษาการเขียนโปรแกรมสำหรับจุดประสงค์ของการท้าทายนี้จะเข้มงวดกว่าคำจำกัดความเล็กน้อยเพียงเล็กน้อย ภาษาการเขียนโปรแกรมที่ใช้ในการท้าทายนี้ต้องเป็นไปตามเงื่อนไขต่อไปนี้ทั้งหมด

หมายเหตุสุดท้าย

  • รหัสที่คุณเขียนควรเป็นโปรแกรมแบบสแตนด์อโลนในทุกภาษาที่มีวัตถุประสงค์เพื่อใช้งานฟังก์ชันหรือตัวอย่างโค้ดไม่ได้รับอนุญาต
  • โปรแกรมของคุณจะไม่ได้รับการป้อนผ่าน STDIN ในทำนองเดียวกันโปรแกรมของคุณจะไม่พิมพ์อะไรไปยัง STDERR
  • คะแนนของตำรวจคือจำนวนภาษาในวงรอบของหลายภาษาที่โพสต์ ตำรวจควรโพสต์ภาษาที่โพลิกอนที่โพสต์นั้นทำงานอย่างถูกต้องรวมถึงจำนวนตัวอักษรที่พวกเขาเพิ่มเข้าไปเพื่อสร้างโพลิกล็อตที่ยาวขึ้น พวกเขาจะไม่รับผิดชอบในการโพสต์ภาษาอีกต่อไปภาษาที่พูดได้หลายภาษาที่ซ่อนอยู่จะทำงานจนกว่าคำตอบของพวกเขาจะปลอดภัย
  • คะแนนของ robber คือจำนวนภาษาที่ polyglot ที่แก้ไขทำงานเช่นเดียวกับตำรวจ robber ควรโพสต์รายการภาษาที่ polyglot ทำงานอย่างถูกต้อง
  • จำนวนตัวอักษรที่เปลี่ยนแปลงควรคำนวณในระยะทาง Levenshtein

3
"ภาษาต้องมีล่ามหรือคอมไพเลอร์ที่พร้อมใช้งานอย่างอิสระขออภัยแฟน ๆ Mathematica แต่พวกโจรจะต้องสามารถยืนยันวิธีแก้ปัญหาของคุณได้" เกิดอะไรขึ้นกับ Wolfram Open Cloud? sandbox.open.wolframcloud.com
Scott Milner

ฉันไม่รู้สิ่งนั้นเนื่องจากฉันมีสำเนา Mathematica ในคอมพิวเตอร์ของฉัน ลบความคิดเห็นแล้ว
Silvio Mayolo

มันโอเคสำหรับ N = 2 และ M = 3 หรือไม่?
mdahmoune

ไม่เป็นไร. คะแนนของคุณจะเป็น 2 แต่ก็เป็นที่ยอมรับอย่างสมบูรณ์
Silvio Mayolo

คำตอบ:


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.