Опис
Завдання цього завдання - розробити програму або функцію, яка відслідковує заданий об’єкт у просторі.
I / O
Вашій програмі буде надано 3 входи, які можуть бути зроблені будь-яким розумним способом :
n
буде розміром сторони площини. (значить, при ваша площина буде дорівнює ). Ви можете припустити, що n
це завжди непарне ціле число.
s
буде вихідним положенням об'єкта, заданим у вигляді пари координат .
D
буде вектором упорядкованих пар. D
дотримуватиметься формату , де завжди буде одним із , для кардинальних та первинних міжкардіальних напрямків, іt k'N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'
буде ціле число для кількості 'тиків'.
З огляду на ці входи, ваша програма повинна вивести відстеження об'єкта в площині.
Правила
Вихід повинен бути містити межі площини. Наприклад:
- 21012 + + ┌─────┐ 2│ │ 1│ │ 0│ │ 1│ │ 2│ │ -└─────┘
буде прикладом порожньої площини . Цифри вгорі та в бік є лише довідковими і їх не потрібно друкувати.
Ви можете використовувати будь-які символи (символи) для меж, якщо це не пробіл (або відображається як пробіл). Обрані вами символи повинні розмежовувати повну площину, тобто між ними не може бути прогалин.
Деякі прийнятні літаки включають: ┌──┐ .... ---- + - + │ │. . | | | | │ │. . | | | | └──┘; ....; ----; + - + Неприйнятні літаки включають: .... .... ++++. . . . + +. . . + +. . ; ....; ....; + +; . .
Об'єктом, який слід відслідковувати, може бути будь-який символ, який ви обрали, якщо він займає лише 1 простір на площині і відрізняється від меж символів.
Слід відстежуваного об'єкта також може бути будь-якими символами, які ви обрали, якщо вони займають лише 1 простір на площині і відрізняються від об'єкта.
Для кожного елемента у об'єкт повинен переміщувати пробілів у напрямку до , а за собою залишати слід.
Якщо об'єкт потрапить на межу, він буде відображений. Якщо в об'єкта все ще залишилися рухи, він продовжуватиме рухатися у напрямку, в якому він був відбитий.
Для довідки ці вказівки відображають один одного:
→ при дотриманні верхньої або нижньої межі;
→ коли досягається бічна межа;
Кінцевий висновок буде містити новітні можливі сліди, тобто якщо об’єкт залишить слід у просторі, де вже є слід, новіший символ сліду замінить старіший.
Як завжди, стандартні лазівки за замовчуванням заборонені .
Оцінка:
Це проблема з кодовим гольфом .
Приклади:
Введення: , ,
Розробка:
0 ┌─────┐ │ │ │ │ 0│ ○ │ │ │ │ │ └─────┘
0 ┌─────┐ │ ○ │ │ \ │ 0│ \ │ │ │ │ │ └─────┘
0 ┌─────┐ │∧ │ │ | \ │ 0│ ○ \ │ │ │ │ │ └─────┘
, який буде результатом.
0 ┌─────┐ │∧ │ │ | \ │ 0│└ ○ \ │ │ │ │ │ └─────┘
(0 є лише для ознайомлення, і їм не потрібно бути в кінцевому результаті.)
Вхідні дані: , ,
Зауважте, що при :
0 ┌─────────┐ │ │ │ │ │ │ │ ∧ │ 0│ / | │ │ ○ / | │ │⟨ / │ │ \ / │ │ ∨ │ └─────────┘
Об'єкт відбився двічі : один раз, коли досягає дна площини, рухаючись у напрямку до , де він відбивається на ; потім ще раз при досягненні лівого боку від площини, де відображає на .
Кінцевий вихід виходить при :
0 ┌─────────┐ │ ○ │ │ \ │ │ \ │ │ \ │ 0│ / | ⟩│ │ ∧ / / │ │⟨ \ / / │ │ \ \ / │ │ ∨ ∨ │ └─────────┘
Тестові приклади:
Введення: n = 5 , s = ( 0 , 0 ) , D = [ ( ′ N W ′ , 2 ) , ( ′ S ′ , 2 ) , ( ′ E ′ , 1 )
Вихід:
0 ┌─────┐ │∧ │ │ | \ │ 0│└ ○ \ │ │ │ │ │ └─────┘
Вхідні дані: , ,
Вихід:
0 ┌─────────┐ │ ○ │ │ \ │ │ \ │ │ \ │ 0│ / | ⟩│ │ ∧ / / │ │⟨ \ / / │ │ \ \ / │ │ ∨ ∨ │ └─────────┘
Вхід: , ,
Вихід:
0 ┌───┐ │ | │ 0│- ○ ┐│ │ | │ └───┘
Введення: , ,
Вихід:
0 ┌───────────┐ │ ∧ │ │ / \ │ │┌ - / - \ \ │ │ \ | / \ \ │ │ \ | \ \ │ 0│ | / ⟩│ │ | \ / / │ │ | / ○ │ │ | / \ │ │ ∨ \ │ │ \ │ └───────────┘
'N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'
замість цього ціле число 0-індексованого (або 1-індексованого)? Так [('NW',2),('S',2),('E',1)]
стає [[7,2],[4,2],[2,1]]
наприклад.