La tortuga quiere moverse a lo largo de la cuadrícula para llegar a su comida. Quiere saber cuántos movimientos le tomará llegar allí.
Además, dado que es lento, tiene teletransportadores configurados alrededor de su dominio que utilizará si acorta su camino. O evítalos si alarga su camino.
Conoce a la tortuga
🐢
La tortuga vive en una cuadrícula
La tortuga puede moverse a cualquier cuadrado adyacente ...
Sin embargo, la tortuga no puede moverse a un cuadrado con una montaña
La tortuga quiere comer su fresa, y le gustaría saber cuánto tiempo le llevará llegar a su fresa
Este ejemplo llevaría a la tortuga vueltas
Por suerte, ¡La tortuga encontró un teletransportador! Hay dos teletransportes en la cuadrícula que se asignan entre sí. Al pisar el teletransportador, la tortuga se mueve inmediatamente al teletransportador correspondiente. Los teletransportadores son muy inestables y después de usarlos una vez, desaparecen y ya no se pueden usar.
El reto
Dada una salida de configuración de cuadrícula inicial, el número de movimientos que le tomará a la tortuga alcanzar su fresa.
Reglas
Puede suponer que la cuadrícula de entrada tiene una solución
Cada cuadrícula solo tendrá uno
strawberry
y dosportals
y unoturtle
La cuadrícula de entrada se puede ingresar en cualquier formato conveniente
Debes tratar los
teleporters
artículos de un solo uso.El turno en que la tortuga se mueve hacia un
teleporter
cuadrado ya está en el correspondienteteleporter
. Nunca se mueve hacia ateleporter
y se queda allí para moverse.El camino más corto no necesita hacer uso del portal
La tortuga no puede pasar a los azulejos de la montaña.
Se puede usar cualquier carácter ASCII o entero para representar
mountains
,turtle
,empty grid square
,strawberry
Puede usar el mismo carácter o dos caracteres ASCII o enteros diferentes para representar los
teleporter
paresUna cuadrícula puede tener más de una ruta con la misma longitud de ruta más corta
Esto es código golf
Aclaraciones a las reglas
- Debe tratar
teleporters
son artículos de un solo uso.
Razonamiento : Se señaló que el caso de:
Solo podría resolverse entrando y saliendo de los portales dos veces. En el momento de hacer esta aclaración, ambas soluciones actuaron asumiendo que eran de un solo uso, o que no había razón para probar cuadrados usados previamente. Para evitar romper sus soluciones tan trabajadas, esta parecía la mejor forma de explicar esta configuración. Por lo tanto, esto se consideraría una cuadrícula no válida.
Casos de prueba formateados 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 prueba formateados 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
Diseño y estructura a través de: Ratón hambriento de Arnauld
Desafíos propuestos Editar consejo: Kamil-drakari , beefster
fuente
Respuestas:
JavaScript (ES7),
140 139138 bytesToma datos como una matriz de enteros con la siguiente asignación:
Pruébalo en línea!
¿Cómo?
Comentado
fuente
Python 2 ,
441431341 bytesPruébalo en línea!
Ingrese como listas, pero utilizando números en lugar de caracteres (gracias a Quintec) y un valor separado para el destino del teletransportador. Esas sangrías grandes deben ser caracteres de tabulación si Stack Exchange las elimina. Cualquier consejo o idea especialmente bienvenida, ya que creo que esto podría ser
muchomás corto.La tabla para los caracteres utilizados en el desafío a los números utilizados para mi programa está a continuación, pero también puede utilizar este programa .
-10 bytes gracias a Quintec al cambiar la entrada del uso de caracteres a números.
-Muchos bytes gracias a Jonathan Frech, ElPedro y Jonathan Allan.
fuente
Python 2 , 391
397403422bytesPruébalo en línea!
El problema se traduce en un gráfico y la solución es encontrar el camino más corto desde la tortuga hasta la fresa.
fuente