บทนำ
เขียนโปรแกรมที่สมบูรณ์ซึ่งหมุนบล็อกสี่เหลี่ยมของอักขระ ASCII 90 องศาตามเข็มนาฬิกา เมื่อโปรแกรมหมุนตามเข็มนาฬิกา 90 องศามันจะหมุนบล็อกของอักขระ ASCII 90 ทวนเข็มนาฬิกา
กฎระเบียบ
- คุณหลายคนไม่ได้ใช้บิวด์อินที่หมุนหรือเปลี่ยนเมทริกซ์ ตัวอย่างเช่นใน MATLAB / Octave
rot90
และผู้ประกอบการขนย้าย'
ไม่ได้รับอนุญาต - คุณต้องเขียนโปรแกรมทั้งหมดที่ใช้ STDIN และ STDOUT หรือโปรแกรมที่ใกล้เคียงที่สุด
- โปรแกรมของคุณจะต้องเป็นสี่เหลี่ยมและสมมติว่าอินพุตนั้นเป็นสี่เหลี่ยมเช่นกัน
- อินพุตและเอาต์พุตเป็นสตริงที่คั่นด้วยบรรทัดใหม่และจะไม่มีการขึ้นบรรทัดใหม่
เมื่อรันด้วยซอร์สโค้ดของมันเป็นอินพุตโปรแกรมของคุณจะต้องหมุนตัวเองตามเข็มนาฬิกา 90 องศา ผลลัพธ์จะต้องเป็นโปรแกรมที่สองในภาษาเดียวกันที่หมุนอินพุต 90 องศาทวนเข็มนาฬิกา เมื่อโปรแกรมที่หมุนได้รับซอร์สโค้ดของมันเป็นอินพุทก็ควรเอาท์พุทซอร์สโค้ดของโปรแกรมต้นฉบับ
หมายเหตุ:ทั้งสองโปรแกรมจะต้องทำงานกับอินพุตใด ๆไม่ใช่แค่ซอร์สโค้ดของตัวเองดังนั้นจึงไม่อนุญาตให้ใช้หนึ่งอักขระ quine
ตัวอย่าง
สมมติว่าโปรแกรมต่อไปนี้เป็นโปรแกรมที่ถูกต้องซึ่งจะหมุนอินพุต 90 องศาในภาษาสมมุติฐาน ExampleLang
^f a2% 3
lk (^_^&
v
D8 $4 /
เมื่อรันด้วยตัวเองเป็นอินพุทมันจะส่งออกโปรแกรมที่ถูกต้องอีกอันที่หมุนอินพุททวนเข็มนาฬิกา:
D l^
8 kf
$ (a
4 ^2
_%
^
/v&3
โปรแกรมที่สองนี้เมื่อกำหนดให้กับตัวเองเป็นอินพุตเอาต์พุตโปรแกรมต้นฉบับ โปรดทราบว่าบรรทัดว่างควรมีช่องว่างสี่ช่องและมีช่องว่างต่อท้ายบนบรรทัดที่สองถึงบรรทัดสุดท้ายที่ไม่สามารถแสดงผลใน markdown เพื่อชี้แจง:
$ examplelang program < program > rotProg
$ examplelang rotProg < rotProg > program1
$ diff -s program program1
Files program and program1 are identical
โปรแกรมที่สั้นที่สุดชนะ ช่องโหว่มาตรฐานถูกแบน
:.+
สามารถแยกหลายบรรทัด?