Um helicóptero que começa no canto superior esquerdo está descendo (em um espaço 2D, para os fins desta pergunta) em direção ao solo. Possui um modo de piloto automático e um modo manual.
O modo de piloto automático se comporta da seguinte maneira:
- Se o espaço diretamente abaixo estiver livre, desça para ele.
- Caso contrário, mova um passo para a esquerda ou direita, totalmente aleatoriamente. (Ele pode mover várias etapas dessa maneira.)
E continua repetindo esses dois passos até atingir o chão. O modo manual é mais inteligente e encontrará o caminho ideal para o solo, mesmo que isso exija mover-se para cima ou algumas manobras hábeis.
Seu trabalho é determinar se
- O piloto automático passará no cenário especificado,
- O piloto automático pode falhar no cenário especificado,
- O piloto automático falhará, mas o modo manual passará ou
- Ambos os modos falharão (não há caminho válido para o solo).
Entrada
- Dado o cenário como uma matriz 1d ou 2d não vazia, usando dois caracteres diferentes para representar espaços livres e bloqueados. Pontuação opcional.
- Opcional: dimensões da matriz
Resultado
Um dos quatro caracteres predefinidos indicando qual dos casos ocorreu.
Dados de amostra
Usando 0 (vazio) e 1 (bloqueado) na entrada, 1 2 3 4 na saída (conforme numerado acima)
0 0 0 0
0 1 0 0
0 0 0 1
1 1 0 0
Resultado: 1
0 0 1 0
1 0 0 1
0 0 0 0
0 1 1 0
0 0 0 1
Saída: 2
(o helicóptero encontrará o 1 na quarta linha e é possível que ele se prenda no final da linha 5, se estiver no modo de piloto automático)
0 0 0 1 0
0 1 1 0 0
0 1 0 0 0
0 0 0 1 0
1 1 1 1 0
Saída: 3
(Isso requer mover para cima, para que o piloto automático falhe)
1 0 0
0 0 0
Resultado: 4
0 0 0 0 1
1 1 1 0 0
1 0 0 1 0
0 1 0 0 0
0 0 1 1 1
Resultado: 4
fonte
Respostas:
Ruby, 259
Eu me diverti muito com isso. Obrigado! os desafios da grade tendem a ser excelentes divertidos com desafios interessantes. Isso pressupõe que "caracteres" na pergunta possam ser números inteiros.
Eu acho que os principais pontos de melhoria aqui são:
r
Sem Golfe (um pouco desatualizado, mas bem próximo):
fonte