อินพุต
ข้อมูลของคุณมีสายเดียวแยกจากกันโดยการขึ้นบรรทัดใหม่เข้าไปใน2n+1
เส้นของความยาวสำหรับจำนวนเต็มบาง2n+1
n ≥ 0
จำนวนเต็มn
ไม่ได้เป็นส่วนหนึ่งของอินพุต คุณจะต้องคำนวณมันจากสตริง เส้นที่มีองค์ประกอบของ >^<v
"ตัวละครทิศทาง" |
หากการขึ้นบรรทัดใหม่ก่อให้เกิดปัญหาคุณสามารถแทนที่พวกเขาโดยท่อแนวตั้ง
รูปแบบการป้อนข้อมูลเป็นตารางสี่เหลี่ยมที่มีขนาด(2n+1)x(2n+1)
และแต่ละเซลล์ของตารางจะถูกตีความว่าเป็นเราเตอร์โรเตอร์ซึ่งชี้ไปในทิศทางที่สำคัญอย่างใดอย่างหนึ่งในสี่ เราดำเนินการวางโทเค็นบนเราเตอร์ที่กึ่งกลางของตารางจากนั้นเราเตอร์จะย้ายไปรอบ ๆ ด้วยวิธีดังต่อไปนี้ เมื่อโทเค็นตกลงบนเราเตอร์เราเตอร์จะเปลี่ยน 90 องศาในทิศทางทวนเข็มนาฬิกาและย้ายโทเค็นหนึ่งขั้นในทิศทางใหม่ที่ชี้ไป หากพบกับเราเตอร์อื่นกระบวนการจะทำซ้ำ แต่ในที่สุดโทเค็นจะหลุดออกจากกริด
เอาท์พุต
เอาต์พุตของคุณคือการกำหนดค่าสุดท้ายของเราเตอร์ในรูปแบบเดียวกับอินพุต
ตัวอย่าง
เป็นตัวอย่างการป้อนข้อมูลพิจารณา3x3
กริด
<^<
^><
>^v
ตำแหน่งที่เราเตอร์ส่วนกลางได้รับการเน้นเพื่อระบุโทเค็น (มันยากที่จะมองเห็น) เราเตอร์ส่วนกลางหมุนไปทางทิศเหนือแล้วย้ายโทเค็นไปที่เซลล์กลางของแถวบนสุด:
<^<
^^<
>^v
เราเตอร์นี้หมุนไปทางตะวันตกและส่งโทเค็นไปที่มุมซ้ายบน:
<<<
^^<
>^v
เราเตอร์ตรงมุมส่งโทเค็นทางทิศใต้ดังนั้นตอนนี้จึงอยู่ที่เซลล์ด้านซ้ายสุดของแถวกลาง:
v<<
^^<
>^v
เราเตอร์นั้นหมุนไปทางตะวันตกและส่งโทเค็นออกจากกริด
v<<
<^<
>^v
นี่คือการกำหนดค่ากริดสุดท้ายดังนั้นโปรแกรมของคุณควรเอาท์พุท โปรดทราบว่าในตัวอย่างที่มีความซับซ้อนมากขึ้นโทเค็นสามารถส่งผ่านเราเตอร์เดียวกันได้หลายครั้งก่อนที่จะตกลงจากกริด
กฎระเบียบ
คุณสามารถเขียนฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบ นี่คือโค้ดกอล์ฟดังนั้นจำนวนไบต์ที่น้อยที่สุดจึงชนะ ช่องโหว่มาตรฐานไม่ได้รับอนุญาต คุณสามารถตัดสินใจได้ว่าจะมีการขึ้นบรรทัดใหม่ในอินพุทและ / หรือเอาท์พุท
กรณีทดสอบ
Input:
v
Output:
>
Input:
<^<
^><
>^v
Output:
v<<
<^<
>^v
Input:
>>^>>
v<vv<
>^>^<
^<>>^
vvv>>
Output:
>>^>>
>v>>v
^>>vv
^^>>>
v^<<^
Input:
<^^^^^^^^
<<^^^^^^>
<<<^^^^>>
<<<<^^>>>
<<<<^>>>>
<<<vv>>>>
<<vvvv>>>
<vvvvvv>>
vvvvvvvv>
Output:
>>>>>>>>v
^>>>>>>vv
^^>>>>vvv
^^^>>vvvv
<<<<<vvvv
^^^^<<vvv
^^^<<<<vv
^^<<<<<<v
^<<<<<<<<