PUNTUACIÓN ACTUALIZADA : como este desafío es más difícil de lo que esperaba, he ajustado la puntuación. Un programa que puede resolver una sola entrada espejo es una respuesta válida. Los programas más sofisticados obtienen una bonificación en su puntaje.
Ha habido varios acertijos en PPCG para encontrar un camino láser en una caja de espejos. En este rompecabezas, debe crear una caja de espejos para que coincida con varios destinos láser.
Se le da una caja y una especificación donde los láseres deben entrar y salir. Su programa necesita colocar exactamente N espejos de doble cara en la caja para cumplir con las especificaciones. Los espejos deben estar en ángulo a 45 grados, pero pueden inclinarse hacia adelante o hacia atrás.
Entrada
Su programa debe aceptar una cuadrícula de cuadro a través de STDIN, argumento de línea de comando o archivo en los siguientes ejemplos de formato:
+--G--+ +abcde+
G | f/////d
| /| a// c
+-----+ f |
+-b-e-+
Los pares de letras ([a-zA-Z] pueden usarse) indican la entrada / salida de hasta 52 láseres. Dentro de la caja habrá N /
espejos. Las dimensiones de la caja serán 3 <= W, H <= 200. La caja está hecha de +|-
caracteres. Puede haber cualquier número de espejos en la caja, incluido cero.
Salida
La salida debe coincidir con la entrada, excepto que los /
caracteres se pueden mover y / o cambiar a \
caracteres. Su programa debe enviar una cadena de caja espejo correcta a STDOUT o un archivo, arrastrando una nueva línea opcional. Si ninguna colocación de espejos puede cumplir con la especificación de entrada, salida Impossible\n
. Ejemplos de posibles soluciones:
+--G--+ +abcde+
G / | f \ \ d
| | a/ \ c
+-----+ f / //|
+-b-e-+
Ejemplo de prueba
Entrada:
+abcdefghijklmnopqrstuvwxyA-+
|/////////////// |
|/////////////// |
| |
+-Abcdefghijklmnopqrstuvwxya+
Salida de ejemplo:
+abcdefghijklmnopqrstuvwxyA-+
|\ \|
|/ / |
|\\\\\\\\\\\\\\\\\\\\\\\\\\ |
+-Abcdefghijklmnopqrstuvwxya+
Puntuación (ACTUALIZADO)
Este es el código de golf con bonos. Con su respuesta, debe nominar cuántos espejos puede resolver su programa (N). Su puntaje es la duración de su programa en bytes dividido por N. Esto permite que las personas ingresen con un programa simple, pero recompensa a más programadores de ambición con un bono.
Lagunas estándar no permitidas.
* 2^30
componente allí