Вдохновленный этим .
Задний план
Злой фермер решил сжечь свое пшеничное поле вниз, чтобы подъехать цены. Чтобы обеспечить полное уничтожение, он также пропитал ваше поле бензином. К сожалению, вы случайно шли по полю, когда оно горело, и вы должны быстро выбраться, чтобы выжить.
Вызов
Учитывая поле, содержащее пшеницу, огонь и ваше местоположение, определите, сможете ли вы вовремя выбраться из поля.
Поле состоит из пшеницы (здесь обозначено .
) и огня ( F
). Здесь ваше местоположение помечено O
. Например:
...F...F
F.......
........
.F......
....O...
...F....
........
.F....F.
Каждую секунду вы перемещаетесь в любую соседнюю ячейку (но не по диагонали), и каждый огонь распространяется на каждую соседнюю ячейку. Если вы не можете перейти в камеру, которая не будет гореть, вы умрете. Если вы сделаете это с поля, вы выживете. Давайте посмотрим, что происходит в этом примере:
...F...F
F.......
........
.F......
....O...
...F....
........
.F....F.
..FFF.FF
FF.F...F
FF......
FFF.....
.F.F.O..
..FFF...
.F.F..F.
FFF..FFF
FFFFFFFF
FFFFF.FF
FFFF...F
FFFF....
FF.FF.O.
.FFFFFF.
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFF.FF
FFFFF.FF
FFFFFFFO
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFFO <-- you made it out and survived, barely
FFFFFFFF
FFFFFFFF
FFFFFFFF
правила
- Ваш ввод - это поле в виде сетки. Вы можете выбрать любой формат ввода, включая строку с разделителями строк или 2D-массив.
- Вы не можете принимать в качестве входных данных места пожара и / или себя.
- Вы можете использовать любые 3 различных значения, такие как пшеница, огонь и ваша позиция, включая не строки для ввода массива.
- Поля всегда имеют размер не менее 1x1, прямоугольные и не содержат недопустимых символов.
- Любое поле будет содержать ровно одно из значений, представляющих ваше местоположение, а любая другая позиция может быть или не быть пожарной.
- Ваш вывод является одним из двух различных значений «ты выжил» или «ты умрешь», как обычно в решении проблемы .
- Применяются стандартные правила игры в гольф .
Контрольные примеры
переживший
O
....
.O..
....
FFFFF
.....
..O..
.....
FFFF
FFFO
FFFF
.F....
......
......
.F....
..O...
.FF...
.F....
..FF..
...F...F
F.......
........
.F......
....O...
...F....
........
.F....F.
Не выжил
FFF
FOF
FFF
F.F
.O.
F.F
....F
.....
..O..
.....
F....
.F....F.
........
........
F..O....
........
.....F..
...F...F
F......F
........
.F......
....O...
...F....
........
.F....F.
F..F
.O..
FF..
источник
Ответы:
Улитки, 15 байт
Попробуйте онлайн!
1
означает выживание, а0
означает смерть.Поскольку невозможно обогнать огонь, никогда не стоит пытаться обходить его. Лучший маршрут - это всегда прямая линия. Таким образом, есть только четыре возможных варианта пути эвакуации. Чтобы определить, является ли направление безопасным, мы проверяем наличие
F
«огненного конуса», указывающего в этом направлении.источник
Python 2 ,
283218209208 байтПопробуйте онлайн!
Принимает ввод в виде строки, разделенной новой строкой, и возвращает
True/False
дляDead/Alive
Работает, проверяя каждое направление (udlr) для
F
поиска, глядя наружу:Пример:
Входные данные:
Пожарные проверки:
Если все направления содержат огонь, вы умрете, в противном случае есть выход.
Редактировать: Назад к получению строки в качестве ввода, и теперь проверяет только вверх / вправо, но также проверяет ввод назад (сдвиг вниз / влево)
Благодаря г-ну Xcoder и Фелипе Нарди Батисте сэкономлено много байтов
источник
JavaScript, 174 байта
Формат ввода:
F
, 1 для.
, 0 дляO
Выход:
Попытайся:
Показать фрагмент кода
Рассмотрим клеточный автомат. Для ячейки есть 3 состояния
O
(достижимых для людей),F
(улов сработал),.
(ничего не произошло). Правило для создания следующего поколения:Как только ячейка на краю имеет
O
состояние, люди выживают. Если этого не произошло в достаточном количестве поколений, то люди погибли.источник
Октава, 71 байт
Попробуйте онлайн!
или
Проверьте все контрольные примеры!
Формат ввода:
1
для.
,2
дляO
и3
дляF
Выход:
true
а такжеfalse
Объяснение:
Объяснение:
источник
Сетчатка , 243 байта
Попробуйте онлайн! Требует, чтобы фоном были пробелы, а не
.
s (или мог бы использоваться какой-либо другой безопасный для регулярных выражений символ). Объяснение:Если есть какой-
O
либо край, удалите все остальное (случай выживания)Поместите
#
в любое пространство над существующимO
.И
#
в любом пространстве ниже существующегоO
.Измените
#
s наO
s, а также любое пространство слева или справа от существующегоO
.Поместите
#
s выше любых существующихF
s. Они могут перезаписыватьO
s, а также пробелы.Поместите
#
s ниже любых существующихF
s, также перезаписываяO
s и пробелы.Измените
#
s наF
s, а также любойO
или пробел слева или справа от существующегоF
. Повторяйте, пока всеF
не поглотят.Вернитесь
1
на выживание,0
если нет.источник