Деякі подібні до тексту тексти на зразок нехай не дозволяють вам ходити в стіни, а також дозволяють вам рухатися назад, якщо ви намагаєтесь. Чому це робити, коли ти можеш змусити гравця рухатися в найближчому дійсному напрямку?
Змагання
Напишіть програму функції, яка, задавши напрямок та сітку символів 3 на 3, виводить ту саму сітку після того, як гравець зробив крок.
Наприклад,
9
#..
.@#
#.#
стає
#.@
..#
#.#
Вхідні дані
Напрямок задається однією цифрою від 1 до 9, кожна відповідає 8 кардинальним напрямкам і стоїть нерухомо. Це походить від відносних розташувань чисел на клавіатурі:
NW N NE .. \ | / ... 7 8 9 W- 4 5 6 -E ... 1 2 3 ../ | \ SW S SE
Однак ви також можете використовувати цифри 123, 456, 789 замість 789, 456, 123. Іншими словами, ви можете поміняти місцями верхній і нижній 2 ряди або числа, якщо захочете. Це єдині 2 прийнятні комбінації індексів.Сітка 3 на 3 буде складатися з 3-х чітко роздрукованих символів ASCII, що представляють підлоги, стіни та програвач. (У тестових випадках,
.
використовується для підлоги,#
s - це стіни та@
гравець)- Ви можете вибрати, які символи використовує ваша програма, але ви повинні вказати їх у своїй відповіді, і вони повинні бути послідовними протягом декількох випробувань.
- Символ, який представляє персонажа, завжди буде посередині сітки 3 на 3, а напрямок завжди буде від 1 до 9 (у т.ч.)
- Ви можете взяти дані в будь-якому порядку
- Сітка 3 на 3 може бути введена як масив char, рядок рядків, рядок довжиною 9 або інша розумна альтернатива.
Вихідні дані
- Повернення з функції або вихід до StdOut або найближчої альтернативи
- Дозволені пробіли та нові рядки
- Ви повинні використовувати ті ж представлення символів, що і вхідні дані
- Для виходів дозволені ті самі формати, дозволені для входів
Як рухається гравець
Якщо вказаний напрямок перекрито стіною (наприклад, якщо вищевказаний приклад мав напрямок 6), тоді подивіться на 2 найближчих напрямки:
- Якщо один (і лише один) напрямок вільний, перемістіть гравця в цьому напрямку.
- Якщо жоден напрямок не вільний, подивіться наступний найближчий 2 напрямок (виключаючи напрям 5). Якщо ви завернули всю дорогу і не знайшли відкритого напрямку (гравець, оточений стінами), не рухайте програвач
- Якщо обидва напрямки відкриті, виберіть один, щоб перейти довільно (хоча не обов'язково рівномірно).
Якщо заданий напрямок 5, не рухайте програвача
Тестові справи
( #
= стіна, .
= підлога, @
= гравець)
Вхід: 9 # .. . @ # #. # Вихід: #. @ .. # #. # Вхід: 3 # .. . @ # #. # Вихід: # .. .. # # @ # Вхід: 7 ##. # @ # .. # Вихід: ## @ ## #. # або #. # .. # @. # Вхід: 5 ... . @. ... Вихід: ... . @. ... Вхід: 2 ### # @ # ### Вихід: ### # @ # ###
Оцінка балів
Це код-гольф , тому найкоротша відповідь у байтах виграє.
123;456;789
замість 789;456;123
?
yuhjklbn
? RIP.