PUNTEGGI AGGIORNATI : poiché questa sfida è più difficile di quanto mi aspettassi, ho modificato il punteggio. Un programma in grado di risolvere un singolo input mirror è una risposta valida. Programmi più sofisticati ottengono un bonus per il loro punteggio.
Ci sono stati diversi enigmi su PPCG per trovare un percorso laser in una scatola di specchi. In questo puzzle, devi creare una scatola di specchi per abbinare un numero di destinazioni laser.
Ti viene data una scatola e una specifica in cui i laser devono entrare e uscire. Il tuo programma deve posizionare esattamente N specchi a doppia faccia nella scatola per soddisfare le specifiche. Gli specchi devono essere inclinati di 45 gradi ma possono essere inclinati in avanti o all'indietro.
Ingresso
Il programma dovrebbe accettare una griglia di riquadri tramite STDIN, argomento della riga di comando o file nei seguenti esempi di formato:
+--G--+ +abcde+
G | f/////d
| /| a// c
+-----+ f |
+-b-e-+
Le coppie di lettere ([a-zA-Z] possono essere utilizzate) indicano l'ingresso / uscita di un massimo di 52 laser. All'interno della scatola ci saranno N /
specchi. Le dimensioni del riquadro saranno 3 <= W, H <= 200. Il riquadro è composto da +|-
caratteri. Potrebbe esserci un numero qualsiasi di mirror nella casella incluso zero.
Produzione
L'output deve corrispondere all'input, ad eccezione dei /
caratteri che possono essere spostati e / o modificati in \
caratteri. Il programma dovrebbe inviare una stringa box mirror corretta a STDOUT o un file, trascinando la nuova riga facoltativa. Se nessun posizionamento dei mirror può soddisfare le specifiche di input, output Impossible\n
. Esempi di possibili soluzioni:
+--G--+ +abcde+
G / | f \ \ d
| | a/ \ c
+-----+ f / //|
+-b-e-+
Esempio di test
Ingresso:
+abcdefghijklmnopqrstuvwxyA-+
|/////////////// |
|/////////////// |
| |
+-Abcdefghijklmnopqrstuvwxya+
Esempio di output:
+abcdefghijklmnopqrstuvwxyA-+
|\ \|
|/ / |
|\\\\\\\\\\\\\\\\\\\\\\\\\\ |
+-Abcdefghijklmnopqrstuvwxya+
Punteggio (AGGIORNATO)
Questo è code-golf con bonus. Dovresti nominare con la tua risposta quanti mirror il tuo programma può risolvere (N). Il tuo punteggio è la lunghezza del tuo programma in byte diviso per N. Ciò consente alle persone di entrare con un semplice programma, ma premia un numero maggiore di programmatori di ambizioni con un bonus.
Scappatoie standard non consentite.
* 2^30
componente anche lì