Мій пес гавкає на мене, але я занадто лінивий, щоб взяти його на прогулянку. У мене є ідея! Я змушу людей у Code Golf зробити це для мене!
Ваше завдання - імітувати прогулянку собаки. Ось правила вигулу собаки:
- Людина (
H
) розпочнеться0,0
в (декартовій) координатній площині і буде випадково проходити по одному простору або вгору, вліво, вправо або вниз щосекунди. - Собака (
D
) почне з того самого місця і пройде або нуль, один, два чи три проміжки або вгору, вліво, вправо або вниз кожну секунду (випадково, звичайно). Собака менш передбачувана і іноді біжить швидше або повністю зупиниться. - Собака ніколи не отримає більше від певної кількості одиниць від людини (на евклідовій відстані), яка є довжиною повідка (
L
). Наприклад, якщоL
є6
, то дійсною була б позиціяH(0,0) D(4,4)
(оскільки відстань становить приблизно 5,65 одиниць), але ніH(0,0) D(5,4)
(приблизно 6,4 одиниці).- Якщо собака рухається, вона порушить вимогу відстані повідця, вона повинна йти в самій далекій відстані у визначеному напрямку, що не порушує вимоги відстані. Наприклад, якщо позиція стоїть
H(0,0) D(3,4)
і собака випадково вирішила перемістити 3 місця вправо, вона піде вD(4,4)
цю сторону, оскільки це найдаліше, до якого вона може пройти, не отримуючи більше 6 одиниць. (Зверніть увагу, що це може призвести до переміщення на 0 пробілів, тобто немає руху взагалі!)
- Якщо собака рухається, вона порушить вимогу відстані повідця, вона повинна йти в самій далекій відстані у визначеному напрямку, що не порушує вимоги відстані. Наприклад, якщо позиція стоїть
- Різні правила: людина рухається першою. Людина не повинна перевищувати довжину повідка під час руху. Якщо це так, він повинен вибрати інший напрямок. "Випадковий" означає "з рівномірним розподілом і без шаблонів".
Вхід буде надано у такому форматі (може бути STDIN, параметр функції, файл тощо):
"<amount of seconds the walk will last> <leash length>"
Наприклад:
300 6 // a 5 minute walk with a 6 yard leash
Ви повинні дати вихід у такому форматі (може бути STDOUT, значення повернення функції, файл тощо):
H(0,0) D(0,0)
H(0,1) D(2,0)
H(1,1) D(2,1)
H(1,0) D(2,-1)
...
(Кількість рядків буде виведена seconds + 1
, оскільки H(0,0) D(0,0)
рядок не враховується.)
Це код-гольф , тому найкоротший код у байтах виграє!