PONTUAÇÃO ATUALIZADA : Como esse desafio é mais difícil do que eu previa, ajustei a pontuação. Um programa que pode resolver uma única entrada de espelho é uma resposta válida. Programas mais sofisticados recebem um bônus em sua pontuação.
Houve vários quebra-cabeças no PPCG para encontrar um caminho a laser em uma caixa de espelhos. Neste quebra-cabeça, você precisa criar uma caixa de espelhos para combinar com vários destinos de laser.
Você recebe uma caixa e especificações onde os lasers devem entrar e sair. Seu programa precisa colocar exatamente N espelhos de dupla face na caixa para atender às especificações. Os espelhos devem estar angulados a 45 graus, mas podem ser inclinados para a frente ou para trás.
Entrada
Seu programa deve aceitar uma grade de caixa via STDIN, argumento de linha de comando ou arquivo nos seguintes exemplos de formato:
+--G--+ +abcde+
G | f/////d
| /| a// c
+-----+ f |
+-b-e-+
Os pares de letras ([a-zA-Z] podem ser usados) indicam a entrada / saída de até 52 lasers. Dentro da caixa haverá N /
espelhos. As dimensões da caixa serão 3 <= W, H <= 200. A caixa é feita de +|-
caracteres. Pode haver qualquer número de espelhos na caixa, incluindo zero.
Resultado
A saída deve corresponder à entrada, exceto que os /
caracteres podem ser movidos e / ou alterados para \
caracteres. Seu programa deve enviar uma seqüência de caixa de espelho correta para STDOUT ou um arquivo, seguindo a nova linha opcional. Se nenhum posicionamento de espelhos atender à especificação de entrada, faça a saída Impossible\n
. Exemplos de possíveis soluções:
+--G--+ +abcde+
G / | f \ \ d
| | a/ \ c
+-----+ f / //|
+-b-e-+
Exemplo de teste
Entrada:
+abcdefghijklmnopqrstuvwxyA-+
|/////////////// |
|/////////////// |
| |
+-Abcdefghijklmnopqrstuvwxya+
Exemplo de saída:
+abcdefghijklmnopqrstuvwxyA-+
|\ \|
|/ / |
|\\\\\\\\\\\\\\\\\\\\\\\\\\ |
+-Abcdefghijklmnopqrstuvwxya+
Pontuação (ATUALIZADO)
Isso é código-golfe com bônus. Você deve indicar com sua resposta quantos espelhos seu programa pode resolver (N). Sua pontuação é o tamanho do seu programa em bytes dividido por N. Isso permite que as pessoas entrem com um programa simples, mas recompensa mais programadores de ambição com um bônus.
Lacunas padrão não permitidas.
* 2^30
componente de lá também