Alphys, el Científico Real del Subterráneo, ha terminado un prototipo para un nuevo rompecabezas. Sin embargo, parece que no puede encontrar a nadie dispuesto a probarlo.
Las reglas de su rompecabezas son las siguientes:
El objetivo es llegar al lado derecho, comenzando desde el mosaico más central en el lado izquierdo. Para rompecabezas con alturas pares, comience en la parte inferior de las dos fichas centrales. (Ejemplos: en una matriz 4x4 indexada a cero, la posición inicial sería [2,0] - fila 2, columna 0. En una matriz 5x5 indexada a cero la posición inicial sería [2,0] - fila 2, columna 0.)
Cada mosaico de color tiene su propia función "sádica":
- Las fichas rosadas y verdes (representadas como "P" y "G") no hacen nada
- Las fichas rojas y amarillas ("R", "Y") son intransitables.
- Las fichas naranjas ("O") hacen que el jugador huela a naranjas
- Las baldosas moradas ("U") obligan al jugador a la siguiente baldosa en la dirección que están mirando y las hacen oler a limones
- Las fichas azules ("B") son pasables siempre que el jugador no huela a naranjas.
Para aclarar la mecánica del sabor, el olor de un jugador persistirá indefinidamente o hasta que sea anulado por una ficha de olor diferente, es decir, si un jugador pisa una ficha de color naranja, olerá a naranja hasta que pise una ficha de color púrpura.
Además, una ficha amarilla colocada vertical u horizontalmente adyacente a una ficha azul hará que la ficha azul también se vuelva intransitable.
Su tarea es escribir un programa o función que acepte una matriz de caracteres bidimensionales (o una matriz de cadenas 1D, o algún otro formato válido) que represente el diseño del rompecabezas como entrada y salida tanto del rompecabezas original como del rompecabezas resuelto, con asteriscos o algunos otro personaje que muestra la ruta correcta. Suponga que el rompecabezas dado es solucionable.
Usa este rompecabezas como ejemplo:
BGYBG
PGPBG
PUBPB
OUGYB
PPOPP
Su programa generaría:
BGYBG
PGPBG
PUBPB
OUGYB
PPOPP
BGYBG
PGPBG
*****
OUGYB
PPOPP
Cualquier rompecabezas usado debe ser generado usando esto .
Se aplican reglas estándar de golf de código. Las mejores respuestas serán las más cortas para cada idioma. Las respuestas deben contener el idioma, el número de bytes y tres casos de prueba. Los dos primeros pueden ser cualquier diseño que elija, pero el tercero debe ser:
RRRR
RPPR
PUOR
RPBP
fuente
Respuestas:
C 529 bytes
Nos acercamos al rompecabezas dando un paso primero a la derecha, siempre que no estemos bloqueados, luego intentemos subir, luego bajar y finalmente volver a la izquierda. La búsqueda es recursiva y una vez que identificamos una ruta exitosa, marcamos los espacios en nuestra matriz y regresamos.
Pruébalo en línea
Sin golf
Ejemplo de salida 1
Ejemplo de salida 2
Ejemplo de salida 3
fuente