Con chó của tôi đang sủa tôi, nhưng tôi quá lười để đưa nó đi dạo. Tôi có ý này! Tôi sẽ nhờ những người ở Code Golf làm điều đó cho tôi!
Thử thách của bạn là mô phỏng việc dắt chó đi dạo. Dưới đây là các quy tắc để dắt chó đi dạo:
- Con người (
H
) sẽ bắt đầu tại0,0
một mặt phẳng tọa độ (Cartesian) và sẽ ngẫu nhiên đi một khoảng trống lên, trái, phải hoặc xuống mỗi giây. - Con chó (
D
) sẽ bắt đầu ở cùng một vị trí và sẽ đi bằng không, một, hai hoặc ba khoảng trống lên, trái, phải hoặc xuống mỗi giây (tất nhiên, ngẫu nhiên). Con chó ít dự đoán hơn và đôi khi sẽ chạy nhanh hơn hoặc dừng lại hoàn toàn. - Con chó sẽ không bao giờ nhận được nhiều hơn một số đơn vị nhất định cách xa con người (theo khoảng cách Euclide), đó là chiều dài của dây xích (
L
). Ví dụ: nếuL
là6
, một vị trí hợp lệ sẽ làH(0,0) D(4,4)
(vì khoảng cách là khoảng 5,65 đơn vị), nhưng khôngH(0,0) D(5,4)
(khoảng 6,4 đơn vị).- Nếu, khi con chó di chuyển, nó sẽ vi phạm yêu cầu về khoảng cách dây xích, nó phải đi xa nhất có thể theo hướng xác định không vi phạm yêu cầu khoảng cách. Ví dụ: nếu vị trí
H(0,0) D(3,4)
và con chó được quyết định ngẫu nhiên di chuyển 3 khoảng trống sang phải, nó sẽ đi đếnD(4,4)
, vì đó là nơi xa nhất mà nó có thể đi mà không cần đi quá 6 đơn vị. (Lưu ý rằng điều này có thể dẫn đến chuyển động 0 khoảng trắng, nghĩa là không có chuyển động nào cả!)
- Nếu, khi con chó di chuyển, nó sẽ vi phạm yêu cầu về khoảng cách dây xích, nó phải đi xa nhất có thể theo hướng xác định không vi phạm yêu cầu khoảng cách. Ví dụ: nếu vị trí
- Quy tắc linh tinh: con người di chuyển đầu tiên. Con người không được vượt quá chiều dài dây xích khi di chuyển. Nếu có, nó phải chọn hướng khác. "Ngẫu nhiên" có nghĩa là "với phân phối đồng đều và không có mẫu."
Đầu vào sẽ được cung cấp ở định dạng này (có thể là STDIN, tham số chức năng, tệp, v.v.):
"<amount of seconds the walk will last> <leash length>"
Ví dụ:
300 6 // a 5 minute walk with a 6 yard leash
Bạn phải cung cấp đầu ra ở định dạng này (có thể là STDOUT, giá trị trả về của hàm, tệp, v.v.):
H(0,0) D(0,0)
H(0,1) D(2,0)
H(1,1) D(2,1)
H(1,0) D(2,-1)
...
(Số lượng đầu ra của dòng sẽ là seconds + 1
, vì H(0,0) D(0,0)
dòng không được tính.)
Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte sẽ giành chiến thắng!