Від цього може залежати ваше життя. Не моргайте. Навіть не моргніть. Мигніть і ви мертві. Вони швидкі. Швидше, ніж можна повірити. Не повертайтеся спиною, не відволікайте погляд і не моргайте! Удачі.
Плачучі ангели - це чужа раса, яка не може рухатися, спостерігаючи іншу істоту (навіть інший Ангел). Вони годують, відправляючи жертв назад у часі. Ви ( Лікар ) потрапили в пастку з кімнатою з деякими, і вам потрібно дістатися до свого ТАРДІС.
Завдання
Напишіть програму, яка дасть уявлення ASCII прямокутної кімнати, виведе шлях, який призведе вас до безпеки. Якщо будь-який Ангел може напасти - в будь-який час під час вашого прогресу - тоді цей шлях не є безпечним. Ангел може напасти, якщо він може бачити вас, не бачивши вас чи інший Ангел.
Вхідні дані
Вхід - дві частини. По-перше, напрямок, у якому ви стикаєтесь (NSEW). Потім на наступних лініях представлення кімнати, де відображаються початкові / кінцеві місця та місцеположення / обличчя всіх Ангелів.
Зразок нижче показує, що один ангел звернений на захід, і ви починаєте звернутись на південь.
S
..........
....D.....
..........
..........
..........
..........
..........
..........
.........W
..........
...T......
.
- Порожній простірD
- Лікар (вихідна позиція)T
- TARDIS (кінцева позиція)N,S,E,W
- Ангел, звернений до вказаного напрямку (північ, південь, схід, захід)
Лінія зору
Ви можете бачити будь-який простір у напрямку 45 градусів у напрямку, перед яким ви стикаєтеся. Лінія зору перешкоджає, якщо по прямій горизонтальній, вертикальній або 45-градусної діагоналі є інше утворення. Будь-яка інша діагональ не перешкоджає погляду. Лінія зору Ангелів працює так само. Наприклад, у наведеному нижче -
зображено ваше поле зору, припускаючи, що ви стикаєтесь на південь.
........
...D....
..---...
.-----..
-------.
---N----
---.--N-
---.----
Вихід
Вихід - це рядок, що представляє шлях, який ви пройдете до виходу. Якщо є кілька безпечних шляхів, виберіть будь-який. Якщо жоден шлях не є безпечним, виведіть 0
. Якщо карта неправильна, робіть все, що завгодно, у тому числі вибиваючи з ладу. Вважайте його неправильним, якщо кімната не прямокутна, немає виходу і т. Д. Якщо немає Ангелів, вона не деформована, просто легко.
Для кожного кроку ви можете зробити одну з двох речей: рухатися в напрямку NSEW або повертатися в напрямку NSEW (без зміни позицій). Для переміщення просто виведіть букву в цьому напрямку. Щоб повернутись обличчям до напрямку, виведіть F
поданий відповідний лист. Наприклад, такий вихід:
SSFESSSSSSSW
- це безпечний шлях для вибірки, наведеної у вхідному розділі. Ви двічі рухаєтесь на південь, обличчям на схід, щоб ангел не було видно, потім ще пів разів рухаєтесь на південь і один раз на захід, щоб увійти в ТАРДІС.
Випробування
1) Ви можете об'їхати Ангела, що виходить на схід, щоб дістатися до TARDIS. Якщо ви не переходите безпосередньо між ними, вони фіксують один одного на місці, тому не має значення, в який бік ви стикаєтеся в будь-який момент.
W
...D....
........
........
........
.E.....W
........
........
...T....
2) Ви програєте. Неможливо обійти їх. Вони можуть бачити один одного, поки ви не переступите між ними. На той момент ви не можете зіткнутися з ними обома, і ви закінчите. Можна також просто заплющити очі і перебрати це.
S
...D....
........
........
........
E......W
........
........
...T....
Перемога
Застосовуються стандартні правила для гольфу та лазівки , виграє найменше байт. Я спробую найближчим часом отримати ще кілька тестових випадків, але сміливо підкажу тим часом свої.
Зображення та цитата від Doctor Who.
J
).