Cho một tập hợp các đường viền 2d không chồng chéo (cách nhau ít nhất một khoảng trống ngay cả trên các đường chéo) với các mũi tên được định hướng theo cùng chiều kim đồng hồ hoặc ngược chiều kim đồng hồ (mỗi đường viền có hướng riêng) và một số dương n
, di chuyển các mũi tên n
các bước dọc theo các đường viền theo hướng tương ứng. Các mũi tên được thể hiện > v < ^
tương ứng cho các hướng phải, xuống, trái và lên. Ở đó, các ký tự khác là -
(ngang), |
(dọc) và +
(góc). Khi một mũi tên ở một góc, nó sẽ giữ hướng hiện tại và chỉ thay đổi sau khi rẽ.
Sẽ luôn có một đoạn thẳng (hoặc một khoảng trắng) giữa hai góc bất kỳ (như +-+
đối với phương ngang và tương tự đối với phương thẳng đứng) - nói cách khác, các góc nhọn U
bị cấm. Các đoạn giữa các góc là dọc hoặc ngang và uốn cong ở một góc luôn là 90 độ.
Đầu vào:
- một số nguyên dương -
n
- số bước - một đại diện ASCII của các đường viền - nó có thể là một chuỗi nhiều dòng, một danh sách các chuỗi, một danh sách các ký tự, v.v.
Đầu ra:
Các đường viền giống nhau với tất cả các mũi tên đã dịch chuyển n
các bước theo hướng chung của mỗi đường viền.
Các trường hợp thử nghiệm:
1.
Đầu vào:
n
= 1
+----->->
| |
| v---+
| |
+---<-------+
Đầu ra:
+------>+
| v
| +>--+
| |
+--<--------+
2.
Đầu vào:
n
= 2
+-----+ +---+
| | | |
+-->--+ | v
| |
+--->---+ |
| |
+------<<---+
Đầu ra:
+-----+ +---+
| | | |
+---->+ | |
| |
+----->-+ v
| |
+----<<-----+
3.
Đầu vào:
n
= 3
+---+ +---+ +-------+
| | | v | |
^ | | | +-<-+ |
| | ^ | | v
| +---+ +-->----+ |
| |
| +-------+ +---+ |
| | | v | |
+---+ +---+ +---+
Đầu ra:
+>--+ ^---+ +-------+
| | | | ^ |
| | | | +---+ |
| | | | | |
| +---+ v----->-+ |
| |
| +-------+ +---+ v
| | | | | |
+---+ +-<-+ +---+
4.
Đầu vào:
n
= 1
+--+
| |
| +---+
| |
+----+ |
| |
+-+
Đầu ra:
+--+
| |
| +---+
| |
+----+ |
| |
+-+
5.
Đầu vào
n
= 4
^>>>>
^ v
^ v>>>>
^ v
<<<<<<<<v
Đầu ra:
^>>>>
^ v
^ v>>>>
^ v
<<<<<<<<v
6.
Đầu vào:
n
= 1
^->
^ v
<<v
Đầu ra:
^>+
^ v
<<v
Viết một hàm hoặc một chương trình giải quyết các nhiệm vụ trên. Mã ngắn nhất tính bằng byte trong mọi ngôn ngữ sẽ thắng. Đừng nản lòng với các ngôn ngữ chơi gôn. Giải thích về thuật toán và mã được đánh giá cao.
There will always be a straight segment (or a space) between any two corners (like +-+ for the horizontal and similar for the vertical) - in other words the sharp U turns are forbidden.