Le défi
Créez une fonction qui, lorsqu'elle reçoit une entrée d'art ASCII (dirigeant un chemin qui peut éventuellement boucler), génère la longueur de la boucle (s'il y en a une) et la longueur de la "queue" menant dans la boucle dans l'un des formulaires ci-dessous.
Contribution
Votre entrée doit être transmise à une fonction. Voici un exemple d'une entrée simple.
# --> # --> #
^ |
| |
| v
# <-- #
Vous pouvez visualiser les blocs ci-dessus comme ceci
La "queue" est un élément, tandis que la boucle est longue de quatre.
Un plus difficile:
# --> # --> #
^ |
| |
| v
# --> # <-- # # --> #
^ ^ |
| | |
| | v
# --> # # <-- # <-- #
Production
Vous devez sortir via STDOUT ou l'alternative la plus proche de votre langue.
Vos deux entiers de sortie devraient être la longueur de la queue et la longueur de la boucle. Cette sortie peut prendre deux formes.
- une chaîne délimitée par des espaces:
"2 10"
- un tableau d'entiers:
[2, 10]
Règles
Chaque bloc, ou
#
, n'aura qu'un seul chemin loin de lui-même.Chaque flèche est composée de deux segments de ligne et d'une tête.
Le bloc de départ sera toujours dans la colonne la plus à gauche.
L'entrée ne sera jamais qu'une boucle.
Exemple
# --> # --> # --> #
^ ^ |
| | |
| | v
# # <-- # <-- #
Celui-ci a une longueur de queue de 2 et une longueur de boucle de 6. En dessous, la queue et la boucle sont séparées.
Queue
# -->
^
|
|
#
Boucle
# --> # --> #
^ |
| |
| v
# <-- # <-- #
Les sorties correctes sont [2, 6]
et "2 6"
.
Si l'entrée n'est qu'une queue , la longueur de boucle est nulle.
# --> # --> # --> #
|
|
v
<-- # <-- #
Les sorties correctes pour l'entrée ci-dessus sont [6, 0]
et"6 0"