Ho un problema serio. Ho alcuni file di testo in cui mantengo i miei numeri molto importanti - tutti quelli importanti! E due e tre ..
Questi numeri erano così importanti che non potevo affidarli a quei nuovi sistemi numerici decimali o binari. Ho mantenuto ogni numero codificato in unario, così:
+--+
| |
+---+ +----+ |
| | | |
+---+ +-------+
~/two.txt
Semplice e affidabile: due loop ASCII per il numero 2. Sfortunatamente, queste cose tendono ad aggrovigliarsi nel tempo e ora ho difficoltà a capire quanti loop ci sono in ciascun file. Ecco alcuni esempi che ho elaborato a mano:
Uno:
+---+
| |
+--+ |
| |
+--+ |
| |
| |
| |
+--+ +--+
| |
+---------+
Tre:
+---------+
| +-----+ |
| | +-+ | |
| | | | | |
| | +-+ | |
| +-----+ |
+---------+
Quattro:
+--------------+
| +--+ +--+ |
| | | | | |
+-|-----|-----|----+
| | | | | | | |
| +--+ +--+ +--+ |
+------------------+
+------------+
| |
+-----+ +-----+ |
| | | |
+-----|-----------+ | |
| | +--+ | | | |
+-+ +--|--|--+ +---------+
| | +-+ | | |
+------+ | | | |
+-------+ | |
|| | |
|+-----+
| |
+---+
Cinque:
+--------+ +--------+ +--------+
| | | | | |
| +--|-----+ +--|-----+ |
| | | | | | | | | |
+-----|--+ +-----|--+ +--------+
| | | |
+--------+ +--------+
Potete aiutarmi a contare i miei anelli?
Ecco le regole:
- Dato che conservo tutto in unario codificato ASCII, l'efficienza dello spazio è molto importante per me. Pertanto, questo è il codice golf. Vince il programma più piccolo in byte.
- I loop sono disegnati con i caratteri +, -, |. Ogni angolo del ciclo è disegnato in modo inequivocabile: esattamente uno dei caratteri sopra e sotto il + sarà |, e esattamente uno a destra o sinistra sarà -. Due + segni non sono mai adiacenti.
- I fili possono passare uno sopra l'altro. Quando i fili si incrociano, sarai in grado di vedere immediatamente il filo "sotto" su entrambi i lati del filo "sopra".
- Il programma dovrebbe prendere una rappresentazione in forma di stringa del loop (da stdin o come parametro di funzione) e produrre un numero (a stdout o come valore di ritorno).
- Le lunghezze delle linee potrebbero non essere uniformi nel disegno ad anello e potrebbero esserci spazi finali su ciascuna linea.
- Si può presumere che ci sia almeno un loop nell'input.
Conto su di te!
+
?