A tartaruga quer se mover ao longo da grade para chegar à sua comida. Ele quer saber quantos movimentos serão necessários para ele chegar lá.
Além disso, como é lento, ele tem teleportadores montados em torno de seu domínio, que ele utilizará se diminuir o seu caminho. Ou evite-os se prolongar seu caminho.
Conheça a tartaruga
🐢
As vidas de tartarugas em uma grade
No entanto, a tartaruga não pode se mover para um quadrado com uma montanha
A Tartaruga quer comer seu Morango, e gostaria de saber quanto tempo levará para chegar ao seu Morango
O desafio
Dada uma configuração inicial da grade, o número de movimentos necessários para a tartaruga alcançar seu morango.
Regras
Você pode assumir que a grade de entrada tem uma solução
Cada grade terá apenas um,
strawberry
doisportals
e umturtle
A grade de entrada pode ser inserida em qualquer formato conveniente
Você deve tratar
teleporters
são itens de uso únicoNa vez em que a tartaruga se move para um
teleporter
quadrado, ele já está no correspondenteteleporter
. Ele nunca se muda para umteleporter
e fica lá para se mexerO caminho mais curto não precisa fazer uso do portal
A tartaruga não pode passar para azulejos de montanha
Você pode usar qualquer caractere ASCII ou inteiro para representar
mountains
,turtle
,empty grid square
,strawberry
Você pode usar o mesmo caractere ou dois caracteres ASCII ou números inteiros diferentes para representar os
teleporter
paresUma grade pode ter mais de um caminho com o mesmo tamanho de caminho mais curto
Isso é código-golfe
Esclarecimentos às Regras
- Você deve tratar
teleporters
são itens de uso único.
Só poderia ser resolvido entrando e saindo dos portais duas vezes. No momento de fazer esse esclarecimento, ambas as soluções agiram assumindo que eram de uso único ou que não havia razão para tentar quadrados usados anteriormente. Para evitar quebrar suas soluções trabalhadas, essa parecia a melhor maneira de explicar essa configuração. Portanto, isso seria considerado uma grade inválida.
Casos de teste formatados como listas
[ ['T', 'X', 'X', 'S', 'X'], ['X', 'X', 'X', 'X', 'X'], ['X', 'X', 'X', 'X', 'X'] ] --> 3
[ ['T', 'M', 'X', 'S', 'X'], ['X', 'M', 'X', 'X', 'X'], ['O', 'X', 'X', 'X', 'O'] ] --> 4
[ ['T', 'M', 'X', 'S', 'O'], ['O', 'M', 'X', 'X', 'X'], ['X', 'X', 'X', 'X', 'X'] ] --> 2
[ ['T', 'M', 'X', 'S', 'X'], ['O', 'M', 'X', 'X', 'X'], ['O', 'X', 'X', 'X', 'X'] ] --> 4
[ ['T', 'M', 'S', 'X', 'O'], ['X', 'M', 'M', 'M', 'M'], ['X', 'X', 'X', 'X', 'O'] ] --> 7
[ ['T', 'X', 'X', 'S', 'X'], ['O', 'M', 'M', 'M', 'X'], ['X', 'X', 'O', 'X', 'X'] ] --> 3
Casos de teste formatados para humanos
T X X S X
X X X X X
X X X X X --> 3
T M X S X
X M X X X
O X X X O --> 4
T M X S O
O M X X X
X X X X X --> 2
T M X S X
O M X X X
O X X X X --> 4
T M S X O
X M M M M
X X X X O --> 7
T X X S X
O M M M X
X X O X X --> 3
Créditos
Projeto e estrutura via: Mouse faminto por Arnauld
Desafios propostos Editar conselhos: Kamil-drakari , beefster