Inspirado por isso .
fundo
O fazendeiro do mal decidiu queimar seu campo de trigo para aumentar os preços. Para garantir a destruição total, ele também encharcou seu campo com gasolina. Ainda mais, infelizmente, você estava andando no campo quando estava aceso e precisava sair rapidamente para sobreviver.
Desafio
Dado um campo que contém trigo, fogo e sua localização, determine se você pode sair do campo a tempo.
Um campo consiste em trigo (aqui representado por .
) e fogo ( F
). Aqui a sua localização é marcada com um O
. Por exemplo:
...F...F
F.......
........
.F......
....O...
...F....
........
.F....F.
A cada segundo você se move para qualquer célula adjacente (mas não na diagonal), e todo fogo se espalha para cada célula adjacente. Se você não pode se mudar para uma célula que não estará pegando fogo, você morre. Se você sair do campo, você sobrevive. Vamos ver o que acontece neste exemplo:
...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
Regras
- Sua entrada é o campo como uma grade. Você pode escolher qualquer formato de entrada, incluindo uma sequência com separadores de linhas ou uma matriz 2D.
- Você não pode tomar como entrada os locais para incêndio e / ou você mesmo.
- Você pode usar quaisquer 3 valores distintos como trigo, fogo e sua posição, incluindo não-strings para entrada da matriz.
- Os campos têm sempre pelo menos 1 x 1 de tamanho, retangulares e não contêm caracteres inválidos.
- Qualquer campo conterá exatamente um valor que representa sua localização e todas as outras posições podem ou não ser acionadas.
- Sua saída é um dos dois valores distintos para "você sobrevive" ou "você morre", como de costume no problema de decisão .
- Aplicam-se as regras padrão de código de golfe .
Casos de teste
Sobreviveu
O
....
.O..
....
FFFFF
.....
..O..
.....
FFFF
FFFO
FFFF
.F....
......
......
.F....
..O...
.FF...
.F....
..FF..
...F...F
F.......
........
.F......
....O...
...F....
........
.F....F.
Não sobreviveu
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..
fonte
Respostas:
Caracóis, 15 bytes
Experimente online!
1
significa sobrevivência enquanto0
significa morte.Como é impossível superar o fogo, nunca é útil tentar contorná-lo. A melhor rota é sempre uma linha reta. Portanto, existem apenas quatro opções possíveis de rota de fuga. Para determinar se uma direção é segura, verificamos se há alguma
F
no "cone de fogo" apontando nessa direção.fonte
Python 2 ,
283218209208 bytesExperimente online!
Recebe a entrada como uma sequência separada de novas linhas e retorna
True/False
paraDead/Alive
Funciona verificando cada direção (udlr) quanto à
F
ira, olhando para fora:Exemplo:
Entrada:
Verificações de incêndio:
Se todas as direções contiverem fogo, você morre, caso contrário, haverá uma fuga.
Edit: Voltar a pegar uma string como entrada e agora apenas verifica se há up / right, mas também verifica a entrada de trás para frente (dando para baixo / esquerda)
Economizou muitos bytes graças ao Sr. Xcoder e Felipe Nardi Batista
fonte
JavaScript, 174 bytes
Formato de entrada:
F
, 1 para.
, 0 paraO
Saída:
Tente:
Mostrar snippet de código
Considere um autômato celular. Existem três estados para uma célula
O
(acessível por pessoas),F
(captura demitida),.
(nada aconteceu). A regra para criar a próxima geração é:Uma vez que uma célula no limite tenha
O
estado, as pessoas sobrevivem. Se isso não aconteceu em quantidade suficiente, as pessoas morreram.fonte
Oitava, 71 bytes
Experimente online!
ou
Verifique todos os casos de teste!
Formato de entrada:
1
para.
,2
paraO
e3
paraF
Saída:
true
efalse
Explicação:
Explicação:
fonte
Retina , 243 bytes
Experimente online! Requer que o plano de fundo seja espaços em vez de
.
s (ou algum outro caractere seguro para regexp pode ser usado). Explicação:Se houver
O
algum, exclua todo o resto (caso de sobrevivência)Coloque um
#
em qualquer espaço acima de um existenteO
.E um
#
em qualquer espaço abaixo de um existenteO
.Altere
#
s paraO
s e também qualquer espaço à esquerda ou à direita de um existenteO
.Coloque
#
s acima de qualquerF
s existente . Eles podem substituirO
s e espaços.Coloque
#
s abaixo de qualquerF
s existente , também substituindoO
s e espaços.Altere
#
s para seF
também qualquerO
espaço ou à esquerda ou direita de um existenteF
. Repita até osF
consumirem tudo.Volte
1
para a sobrevivência,0
se não.fonte