Sự miêu tả
Nhiệm vụ của thách thức này là để đưa ra một chương trình hay chức năng theo dõi một đối tượng nhất định trong một không gian.
Tôi / O
Chương trình của bạn sẽ được cung cấp 3 đầu vào, có thể được thực hiện theo bất kỳ cách hợp lý nào :
n
sẽ là kích thước của mặt phẳng. (vì vậy, với , mặt phẳng của bạn sẽ là ). Bạn có thể giả sử n
sẽ luôn là một số nguyên lẻ.
s
sẽ là vị trí bắt đầu của đối tượng, được đưa ra dưới dạng một cặp tọa độ .
D
sẽ là một vectơ của các cặp theo thứ tự. D
sẽ theo định dạng , trong đó sẽ luôn là một trong số đó 'N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'
, đối với các hướng liên thông chính và chính, và sẽ là một số nguyên cho số lượng 'tick'.
Với các đầu vào này, chương trình của bạn phải xuất ra một bản theo dõi của đối tượng trong mặt phẳng.
Quy tắc
Đầu ra phải chứa ranh giới của mặt phẳng. Ví dụ:
- 21012 + + ┌─────┐ 2│ 1│ 0│ 1│ 2│ -└─────┘
sẽ là một ví dụ về một sản phẩm nào mặt phẳng 5 × 5. Các số ở trên và bên cạnh chỉ mang tính tham khảo và không cần phải in.
Bạn có thể sử dụng bất kỳ ký tự nào cho các ranh giới, miễn là nó không phải là khoảng trắng (hoặc hiển thị dưới dạng khoảng trắng). Các nhân vật bạn chọn phải phân định toàn bộ mặt phẳng, nghĩa là không thể có khoảng cách giữa chúng.
Một số mặt phẳng được chấp nhận bao gồm: ┌──┐ .... ---- + - + │ │. . | | | | │ │. . | | | | └──┘; ....; ----; + - + Các mặt phẳng không được chấp nhận bao gồm: .... .... ++++. . . . + +. . . + +. . ; ....; ....; + +; . .
Đối tượng cần theo dõi có thể là bất kỳ ký tự nào bạn chọn, miễn là nó chỉ chiếm 1 khoảng trống trên mặt phẳng và khác với các ký tự biên.
Dấu vết của đối tượng được theo dõi cũng có thể là bất kỳ ký tự nào bạn chọn, miễn là chúng chỉ chiếm 1 khoảng trống trên mặt phẳng và khác với đối tượng.
Đối với mỗi phần tử tại , đối tượng phải di chuyển không gian đối với , và để lại một dấu vết phía sau.
Nếu đối tượng sẽ chạm vào một ranh giới, nó sẽ được phản ánh. Nếu đối tượng vẫn còn bất kỳ di chuyển nào, nó sẽ tiếp tục di chuyển theo hướng mà nó được phản ánh.
Để tham khảo, các hướng này phản ánh với nhau:
→ khi ranh giới trên hoặc dưới được đáp ứng;
→ khi một ranh giới bên được đáp ứng;
Đầu ra cuối cùng sẽ chứa các dấu vết mới nhất có thể, nghĩa là, nếu đối tượng sẽ để lại dấu vết trong một không gian có dấu vết, ký tự dấu vết mới hơn sẽ ghi đè lên dấu cũ.
Như thường lệ, các lỗ hổng tiêu chuẩn bị cấm theo mặc định .
Ghi điểm:
Đây là một thách thức mã golf .
Ví dụ:
Làm việc ra:
0 ┌─────┐ │ │ │ │ 0│ │ │ │ │ └─────┘
0 ┌─────┐ ○ │ \ 0│ \ │ │ │ │ └─────┘
0 ┌─────┐ │∧ │ │ | \ 0│ ○ \ │ │ │ │ └─────┘
0 ┌─────┐ │∧ │ │ | \ 0│└ ○ \ │ │ │ │ └─────┘
(Số 0 chỉ mang tính tham khảo và chúng không cần phải ở đầu ra cuối cùng.)
0 ┌─────────┐┐ │ │ │ │ │ │ ∧ 0│ / | │ │ ○ / | │ │⟨ / │ \ / ∨ └─────────┘┘
0 ┌─────────┐┐ ○ │ \ │ \ │ \ 0│ / | │ ∧ / / │⟨ \ / / │ \ \ / ∨ ∨ └─────────┘┘
Các trường hợp thử nghiệm:
Đầu ra:
0 ┌─────┐ │∧ │ │ | \ 0│└ ○ \ │ │ │ │ └─────┘
Input: , ,
Đầu ra:
0 ┌─────────┐┐ ○ │ \ │ \ │ \ 0│ / | │ ∧ / / │⟨ \ / / │ \ \ / ∨ ∨ └─────────┘┘
Đầu vào: , ,
Đầu ra:
0 ┌───┐ │ | 0│- ○ │ | └───┘
Đầu vào: , ,
Đầu ra:
0 ┌───────────┐ ∧ │ / \ │┌ - / - \ \ │ \ | / \ \ │ \ | \ \ 0│ | / │ | \ / / │ | / ○ │ | / \ │ ∨ \ │ \ └───────────┘
'N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'
Thay vào đó, chúng ta có thể lấy số nguyên 0 (hoặc 1 chỉ mục) không? Vì vậy, [('NW',2),('S',2),('E',1)]
trở thành [[7,2],[4,2],[2,1]]
ví dụ.