Đầu vào
Đầu vào của bạn là một chuỗi đơn, được phân tách bằng các dòng mới thành 2n+1
các dòng có độ dài 2n+1
, đối với một số nguyên n ≥ 0
. Số nguyên n
không phải là một phần của đầu vào; bạn sẽ phải tính toán nó từ chuỗi. Các dòng được tạo thành từ "ký tự hướng" >^<v
. Nếu dòng mới gây ra vấn đề, bạn có thể thay thế chúng bằng ống đứng |
.
Đầu vào tạo thành một lưới hình vuông có kích thước (2n+1)x(2n+1)
và mỗi ô của lưới được hiểu là một bộ định tuyến rôto , chỉ ra một trong bốn hướng chính. Chúng tôi tiến hành thả mã thông báo trên bộ định tuyến ở trung tâm của lưới và sau đó các bộ định tuyến sẽ di chuyển nó theo cách sau. Khi mã thông báo hạ cánh trên bộ định tuyến, bộ định tuyến quay 90 độ theo hướng ngược chiều kim đồng hồ và di chuyển mã thông báo một bước theo hướng mới mà nó trỏ tới. Nếu nó hạ cánh trên một bộ định tuyến khác, quá trình được lặp lại, nhưng cuối cùng, mã thông báo sẽ rơi ra khỏi lưới.
Đầu ra
Đầu ra của bạn là cấu hình cuối cùng của các bộ định tuyến, có cùng định dạng với đầu vào.
Thí dụ
Như một ví dụ đầu vào, hãy xem xét 3x3
lưới
<^<
^><
>^v
trong đó bộ định tuyến trung tâm đã được tô sáng để chỉ ra mã thông báo (hơi khó nhìn). Bộ định tuyến trung tâm quay về hướng bắc và di chuyển mã thông báo đến ô trung tâm của hàng trên cùng:
<^<
^^<
>^v
Bộ định tuyến này quay về hướng tây và gửi mã thông báo đến góc trên cùng bên trái:
<<<
^^<
>^v
Bộ định tuyến ở góc gửi mã thông báo về phía nam, vì vậy giờ đây nó nằm ở ô ngoài cùng bên trái của hàng giữa:
v<<
^^<
>^v
Bộ định tuyến đó quay về hướng tây và gửi mã thông báo ra khỏi lưới.
v<<
<^<
>^v
Đây là cấu hình lưới cuối cùng, vì vậy chương trình của bạn sẽ xuất nó. Lưu ý rằng trong các ví dụ phức tạp hơn, mã thông báo có thể vượt qua cùng một bộ định tuyến nhiều lần trước khi rơi khỏi lưới.
Quy tắc
Bạn có thể viết một hàm hoặc một chương trình đầy đủ. Đây là môn đánh gôn, vì vậy số byte thấp nhất sẽ thắng. Sơ hở tiêu chuẩn là không được phép. Bạn có thể quyết định xem có một dòng mới trong đầu vào và / hoặc đầu ra.
Các trường hợp thử nghiệm
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
^<<<<<<<<