La sfida
Crea una funzione che, quando viene fornito un input di arte ASCII (dirigendo un percorso che potrebbe eventualmente eseguire un loop), genera la lunghezza del loop (se ce n'è uno) e la lunghezza della "coda" che conduce nel loop in uno dei moduli di seguito.
Ingresso
L'input deve essere passato a una funzione. Di seguito è riportato un esempio di un semplice input.
# --> # --> #
^ |
| |
| v
# <-- #
È possibile visualizzare i blocchi sopra in questo modo
La "coda" è un elemento, mentre il ciclo è lungo quattro.
Uno più difficile:
# --> # --> #
^ |
| |
| v
# --> # <-- # # --> #
^ ^ |
| | |
| | v
# --> # # <-- # <-- #
Produzione
È necessario eseguire l'output tramite STDOUT o l'alternativa più vicina alla propria lingua.
I tuoi due numeri interi di output dovrebbero essere la lunghezza della coda e la lunghezza del loop. Questo output può essere in due forme.
- una stringa delimitata da spazi:
"2 10"
- una matrice di numeri interi:
[2, 10]
Regole
Ogni blocco, o
#
, avrà solo un singolo percorso lontano da se stesso.Ogni freccia è composta da due segmenti di linea e una testa.
Il blocco iniziale sarà sempre nella colonna più a sinistra.
L'input non sarà mai solo un loop.
Esempio
# --> # --> # --> #
^ ^ |
| | |
| | v
# # <-- # <-- #
Questo ha una lunghezza della coda di 2 e una lunghezza dell'anello di 6. Sotto, la coda e l'anello sono separati.
Coda
# -->
^
|
|
#
Ciclo continuo
# --> # --> #
^ |
| |
| v
# <-- # <-- #
Le uscite corrette sono [2, 6]
e "2 6"
.
Se l'ingresso è solo una coda , la lunghezza del loop è zero.
# --> # --> # --> #
|
|
v
<-- # <-- #
Le uscite corrette per l'ingresso sopra sono [6, 0]
e"6 0"