Я просто играл в настольную игру Извините! с некоторыми людьми, и я понял, что смогу решить несколько интересных задач. Это довольно просто.
Ваша задача просто вывести ascii-art версию жалкой доски, размещая фрагменты там, где я вам говорю.
Спекуляции
Во-первых, вот изображение фактического извините! доска для справки:
Пустая доска выглядит так:
# > - - o # # # # > - - - o # #
# # S v
o # H # # # # # |
| # |
| # S o
| # #
^ H #
# #
# #
# H v
# # |
o S # |
| # |
| # # # # # H # o
^ S # #
# # o - - - < # # # # o - - < #
Обратите внимание на несколько особенностей.
- Это
#
пустые квадраты. - «И
S
» иH
«Начало» и «Дом» соответственно. - Это
>v<^
начало слайдов, в зависимости от того, в каком направлении они смотрят. - Символы
|
's' и-
's' - это середина слайдов, в зависимости от того, горизонтальные они или вертикальные. - Это
o
конец слайдов. - Каждый столбец разделен столбцом пробелов, чтобы он выглядел более квадратным.
Теперь вот что вы должны сделать:
- Ваш вход представляет собой список координат различных фигур, которые были размещены на доске.
- Координаты начинаются
0
с квадрата за пределами начала нижнего цвета (желтый на рисунке) и увеличиваются на единицу на квадрат по часовой стрелке. - После этих 60 квадратов безопасные зоны имеют следующие и последние 20 координат, начиная с той, что внизу (которая получает 60-64), и затем по часовой стрелке.
- Вам нужно будет поставить звездочки (
*
ы) в правильные координаты, заменив персонажа внизу для всех игроков. - Кроме того, если кто-либо из игроков находится на начальном поле слайдера, перед размещением переместите его в конец слайдера.
- Вы можете предположить, что не будет никаких коллизий, до или после разрешения ползунков.
- Вам не нужно беспокоиться о домах или старте.
- Вы можете быть 1-проиндексированы, если хотите, но тестовые примеры 0-индексированы.
Тестовые случаи
[0, 20] ->
# > - - o # # # # > - - - o # #
# # S v
* # H # # # # # |
| # |
| # S o
| # #
^ H #
# #
# #
# H v
# # |
o S # |
| # |
| # # # # # H # o
^ S # #
# # o - - - < # # # # * - - < #
[2, 7, 66] ->
# > - - o # # # # > - - - o # #
# # S v
o # H # # # # # |
| # |
| # S o
| # #
^ H #
# #
# #
# H v
# # |
o S # |
| # |
| # * # # # H # o
^ S # #
# # o - * - < # # * # o - - < #
0, 5
а второй может быть2, 60, 37
).Ответы:
Python 2, 476 байт
Короткое трехстрочное решение ( попробуйте онлайн )
Однострочник в 534 ( попробуйте онлайн ):
Я предполагаю показатели безопасной зоны следующим образом:
Пояснение (строки немного разделены для лучшего понимания):
источник