RoboCritters ( นิรุกติศาสตร์ ) เป็นภาษาการเขียนโปรแกรมลึกลับใหม่ล่าสุด(ไม่ต้องค้นหามันฉันแค่คิดค้นมัน) มันแตกต่างจากBrainfuck (BF) ซึ่งซับซ้อนกว่าแผนทดแทนผู้ดำเนินการเล็กน้อย ทุกโปรแกรมใน RoboCritters เป็นตารางข้อความที่ประกอบด้วยอักขระเจ็ดตัวเท่านั้น. []/\|
รวมถึงการขึ้นบรรทัดใหม่เพื่อกำหนดตาราง
ตัวอย่างโปรแกรม RoboCritters:
|\/||./|[]||
[..][][] |
|/\|[..][..]
[..] \/\/
ในการแปลโปรแกรม RoboCritters เป็น BF ให้ดูที่อักขระที่ไม่ใช่บรรทัดใหม่ในตารางตามลำดับการอ่านปกติ (จากซ้ายไปขวาจากบนลงล่างจากบนลงล่าง) เช่น |\/||./|[]||[..][][] ||/\|[..][..][..] \/\/
เช่น
หากส่วน 4 × 2 ของตารางขยายไปทางขวาและลงจากอักขระปัจจุบันตรงกับหนึ่งในแปดcritters หุ่นยนต์ที่ระบุไว้ด้านล่างผนวกคำสั่ง BF ที่สอดคล้องกัน( ><+-.,[]
) เพื่อโปรแกรม BF (ตอนแรกว่างเปล่า)
หากส่วนของกริด 4 × 2 ไม่ตรงกับส่วนใด ๆ ของหุ่นยนต์ critters หรือออกนอกขอบเขตจะไม่มีการเพิ่มอะไรเข้าไปในโปรแกรม BF
Joybot
>
คำสั่ง:[..] \][/
Calmbot
<
คำสั่ง:[..] /][\
Squidbot
+
คำสั่ง:[..] //\\
Spiderbot
-
คำสั่ง:[..] ||||
Bunnybot
.
คำสั่ง:[][] [..]
Toothbot
,
คำสั่ง:[..] |/\|
Foxbot
[
คำสั่ง:|\/| [..]
Batbot
]
คำสั่ง:[..] \/\/
ดังนั้นการอ่านโปรแกรมตัวอย่าง
|\/||./|[]||
[..][][] |
|/\|[..][..]
[..] \/\/
เราจะเห็นได้ว่าเราพบ Foxbot เป็นครั้งแรก (ที่คอลัมน์ 1, แถวที่ 1) จากนั้นเป็น Toothbot (c1, r2) จากนั้นเป็น Bunnybot (c5, r2) และสุดท้ายเป็น Batbot (c9, r3) สิ่งนี้สอดคล้องกับโปรแกรม BF[,.]
สอดคล้องกับโปรแกรม
ขอให้สังเกตว่า Foxbot และ Toothbot ทับซ้อนกัน นี่คือเจตนา; หุ่นยนต์ critters จะไม่ตีความแตกต่างกันเมื่อทับซ้อนกันที่แตกต่างกันเมื่อพวกเขาทับซ้อน
ท้าทาย
เขียนโปรแกรมที่สั้นที่สุดเท่าที่จะทำได้ในโปรแกรม RoboCritters และให้ผลลัพธ์เทียบเท่า BF คุณไม่จำเป็นต้องเรียกใช้ BF หรือตรวจสอบว่ามันถูกต้องเพียงแปลรหัส RoboCritters เป็นรหัส BF
รายละเอียด
โปรแกรมอินพุต RoboCritters ทั้งหมดจะใช้ได้นั่นคือพวกมันจะเป็นบล็อกสี่เหลี่ยมของข้อความที่มีเพียงแค่ตัวอักษรเจ็ดตัว
. []/\|
เท่านั้นรวมถึงการขึ้นบรรทัดใหม่เพื่อกำหนดรูปร่าง บรรทัดใหม่อาจจะอยู่ในที่สะดวกตัวแทนทั่วไป คุณอาจเลือกที่จะสมมติว่าโปรแกรมมีการขึ้นบรรทัดใหม่ต่อท้ายคุณต้องสนับสนุนโปรแกรม RoboCritters ที่เล็กกว่า 4 × 2 รวมถึงโปรแกรม 0 × 0 ที่ว่างเปล่า (หรือขึ้นบรรทัดใหม่) สิ่งเหล่านี้ทั้งหมดสอดคล้องกับโปรแกรม BF เปล่า (สตริงว่าง)
โปรแกรม BF
><+-.,[]
ส่งออกควรจะเป็นสตริงหนึ่งบรรทัดเท่านั้นที่มีตัวอักษรคำสั่งแปด อาจมีทางเลือกขึ้นบรรทัดใหม่ขึ้นบรรทัดเดียวใช้อินพุตในแบบปกติ (ไฟล์ stdin / text / บรรทัดคำสั่ง) และเอาต์พุตไปยัง stdout หรือทางเลือกอื่นที่ใกล้เคียงที่สุดในภาษาของคุณ
แทนที่จะเป็นโปรแกรมคุณสามารถเขียนฟังก์ชันที่ใช้โปรแกรม RoboCritters เป็นสตริงและพิมพ์หรือส่งคืนสตริงโปรแกรม BF
ตัวอย่าง
อินพุต: (ตัวแปรตัวอย่างด้านบน)
|\/|[][] [..][][] |/\|[..] \/\/
เอาท์พุท:
[,.]
อินพุต: (ทดสอบ critters ของหุ่นยนต์ทั้งหมด)
[..][[[[[..]]. ]|\/| \][/[..]//\\[..][..] [..]/][\[][]|/\|[..] ||||/\| [..]| |\/\/
เอาท์พุท:
>+[<,-.]
การป้อนข้อมูล:
[..] [..] [..] [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [..] [][] [][] [..] [..] [..] [][] [..] [..] [][] [..] [..] [][] [..] [][] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [][] [..] [..] [..] [][] //\\ //\\ //\\ //\\ //\\ //\\ //\\ //\\ [..] \][/ //\\ //\\ //\\ //\\ [..] \][/ //\\ //\\ \][/ //\\ //\\ //\\ \][/ //\\ //\\ //\\ \][/ //\\ /][\ /][\ /][\ /][\ |||| \/\/ \][/ //\\ \][/ //\\ \][/ |||| \][/ \][/ //\\ [..] /][\ \/\/ /][\ |||| \/\/ \][/ \][/ [..] \][/ |||| |||| |||| [..] //\\ //\\ //\\ //\\ //\\ //\\ //\\ [..] [..] //\\ //\\ //\\ [..] \][/ \][/ [..] /][\ |||| [..] /][\ [..] //\\ //\\ //\\ [..] |||| |||| |||| |||| |||| |||| [..] |||| |||| |||| |||| |||| |||| |||| |||| [..] \][/ \][/ //\\ [..] \][/ //\\ //\\ [..]
ผลลัพธ์: ( โปรแกรม BF Hello World )
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
อินพุต: (ไม่มี critters ของหุ่นยนต์อยู่)
/\\\[]. ]..[..] \\//||\
เอาต์พุต: (สตริงว่าง)
เกณฑ์การให้คะแนน
การส่งที่สั้นที่สุดในหน่วยไบต์ชนะ ( ตัวนับไบต์ที่มีประโยชน์ ) Tiebreaker เป็นโพสต์ที่โหวตมากที่สุด