มีเรื่องราวเก่าแก่เกี่ยวกับช่างหินที่ไม่เคยพอใจกับสิ่งที่เขาเป็น เขาหวังว่าเขาจะกลายเป็นดวงอาทิตย์ได้และเขาก็เป็นเช่นนั้น ถูกบล็อกโดยเมฆเขาต้องการที่จะ - และกลายเป็น - เมฆ เมื่อลมพัดเขาต้องการให้ตัวเองเป็นลม หยุดด้วยภูเขาเขาต้องการเป็นภูเขาและกลายเป็นหนึ่ง อย่างไรก็ตามในไม่ช้าเขาก็ถูกแฮ็คโดยช่างหินและประสงค์จะเป็นช่างหิน
ในทำนองเดียวกันงานของคุณคือการเขียนโปรแกรมที่ไม่เคยพอใจกับภาษาที่ใช้อยู่โปรแกรมของคุณต้องส่งออกชุดการแทนที่ regex เพื่อเปลี่ยนเป็นภาษาอื่น และอื่น ๆ
กฎระเบียบ
- เขียนโปรแกรมในภาษาที่คุณเลือก
- โปรแกรมควรส่งออกชุดอย่างน้อยสองส่วน ส่วนคือข้อความจำนวนมากคั่นด้วยเครื่องหมายอัฒภาค อย่างไรก็ตามหากมีเครื่องหมายอัฒภาคอยู่ใน regex การแยกมันออกจะทำให้ไวยากรณ์ไม่ถูกต้อง แต่จะไม่แยกเซกเมนต์ ดูตัวอย่าง
- ส่วนแรกเป็นรูปแบบการค้นหา regex และส่วนที่สองคือรูปแบบการทดแทน รูปแบบที่สามเป็นรูปแบบ "ค้นหา" อีกรูปแบบและรูปแบบที่สี่คือรูปแบบ "แทนที่" เป็นต้น
- ใช้รูปแบบ regex กับโปรแกรม แทนที่รูปแบบในส่วนแรกด้วยหนึ่งในสอง; แทนที่รูปแบบที่สามด้วยรูปแบบในสี่และอื่น ๆ
- ผลลัพธ์ควรเป็นโปรแกรมในภาษาอื่นซึ่งตัวเองปฏิบัติตามกฎ 2 ถึง 4
- ภาษาที่ใช้จะต้องสร้างวัฏจักรที่ไม่สิ้นสุดซ้ำ
- ตัวอย่างเช่น Python -> PHP -> C ++ -> Python -> PHP -> C ++ -> Python -> ...
- คะแนนของคุณคือระยะเวลาของรอบ ความสัมพันธ์จะถูกทำลายโดยความยาวรหัสเริ่มต้นที่สั้นที่สุด
- ในตัวอย่างข้างต้นคะแนนคือสาม
- ในการวนซ้ำแต่ละรอบจะไม่มีการใช้ภาษามากกว่าหนึ่งครั้ง
- สำหรับกฎ 5 และ 7 ภาษาที่เข้ากันได้ (C และ C ++) และรุ่นที่แตกต่างกันของภาษาเดียวกัน (Python 2 และ Python 3) ถือว่าเป็นภาษาเดียวกัน
- โปรแกรมเองไม่จำเป็นต้องทำซ้ำ
- ในตัวอย่างข้างต้นโปรแกรมแรกและโปรแกรมที่สี่อาจแตกต่างกัน
- regex ทุกรุ่นสามารถใช้ได้ แต่ต้องใช้โปรแกรมเดียวกันทุกโปรแกรม
- เอาต์พุตทั้งหมดสำหรับแต่ละโปรแกรมต้องไม่เกิน 100 ตัวอักษร
- แต่ละเอาต์พุตต้องมีคำแนะนำในการเปลี่ยนโปรแกรมจริง นั่นคือไม่มีโปรแกรมสองโปรแกรมติดต่อกันในรอบอาจจะเหมือนกัน
ตัวอย่าง
Python -> Ruby -> Python -> ...
print "uts;Z;rint;uts;Z(?=;Z);rint"
ขาออก:
uts;Z;rint;uts;Z(?=;Z);rint
กลุ่มคือ:
FIND ; REPLACE
uts ; Z
rint ; uts
Z(?=;Z ; rint (breaking the first segment in two would result in invalid syntax)
การใช้การแทนที่ regex ตามลำดับทำให้เรา:
print "Z;Z;rint;Z;Z(?=;Z);rint" # replace each "uts" with "Z"
puts "Z;Z;uts;Z;Z(?=;Z);uts" # replace each "rint" with "uts"
puts "rint;Z;uts;rint;Z(?=;Z);uts" # replace each "Z" followed by ";Z" with "rint"
การเรียกใช้บรรทัดสุดท้ายทำให้เรามีคำแนะนำในการเปลี่ยนกลับเป็นรหัสหลาม
\;
;)