Dada una cuadrícula de direcciones y una posición inicial y final, determine el número mínimo de sustituciones en la cuadrícula de dirección que debe realizarse para completar el camino entre los dos puntos. La cuadrícula es doblemente cilíndrica. Esto está más claro dado un ejemplo.
Ejemplo
Tomemos la siguiente cuadrícula como ejemplo:
>>>>v
>>>><
<<<<<
Comencemos por (1, 1)
y terminemos en (1, 3)
(donde están las coordenadas (x, y)
o (col, row)
, con la fila superior y la columna izquierda 1
). Entonces, una posible solución es reemplazar el (1, 1)
y (1, 2)
con v
, para que la grilla final se vea así:
v>>>v
v>>><
<<<<<
A partir de (1, 1)
, el camino nos llevaría a (1, 3)
. Sin embargo, existe una solución más corta, que es reemplazar (5, 2)
con v
, por lo que la grilla final es esta:
>>>>v
>>>>v
<<<<<
A partir de (1, 1)
, un camino bastante largo conduce a (1, 3)
.
Reemplazar cualquier cosa en la fila superior con ^
trabajos también (gracias @Spitemaster).
Entrada
La entrada consistirá en una cuadrícula rectangular de 4 valores posibles, así como dos coordenadas. Puede tomar la cuadrícula en cualquier formato razonable; por ejemplo, matriz de caracteres o enteros, lista de cadenas, etc. También puede solicitar las dimensiones de la cuadrícula. Puede tomar las coordenadas en cualquier formato razonable; por ejemplo, par entero, número complejo, etc. Puede elegir indexación 0 o 1.
Salida
La salida debe ser un número entero, el número mínimo de reemplazos de cuadrícula necesarios para cerrar la ruta desde el principio hasta el final.
Reglas y especificaciones
- Se aplican lagunas estándar
- la cuadrícula es doblemente cilíndrica, lo que significa que moverse hacia arriba desde la parte superior va hacia abajo, la izquierda desde la izquierda hacia la derecha, etc.
Casos de muestra
Los casos de muestra se proporcionan como una matriz de caracteres y coordenadas indexadas 1.
Caso 1
Entrada
>>>>v
>>>><
<<<<<
1 1
1 3
Salida
1
Explicación
Ver ejemplo.
Caso 2
Entrada
<<<<<
v>v>v
>>>>>
1 1
5 3
Salida
1
Explicación
Puede reemplazar (1, 1)
con v
o (2, 1)
con v
. En el primer caso, comenzando desde (1, 1)
, el camino va directo hacia abajo y luego a la derecha hacia el destino. En el segundo caso, el camino gira de la izquierda a la derecha, llega (2, 1)
, baja, derecha, abajo y luego a la derecha hasta llegar al destino.
Caso 3
Entrada
^^^^^^
><<>>>
vvvvvv
2 2
5 2
Salida
2
Explicación
El mejor cambio es hacer que la fila central se ajuste alrededor de la izquierda al punto; es decir, haga el primer y el último elemento en la fila central <
. Alternativamente, hacer 2 2
y 3 2
ambos >
.
Este es un desafío de código de golf , por lo que gana el código más corto
><
¿hace ping pong de un lado a otro (para que se llegue a ambas posiciones) o es como si hubiera una pared entre ellos?
^
ov
.