J'ai un problème grave. J'ai des fichiers texte où je garde mes numéros très importants - tous les plus importants! Et deux et trois ..
Ces nombres étaient si importants que je ne pouvais pas les confier à ces nouveaux systèmes de nombres décimaux ou binaires. J'ai gardé chaque numéro codé en unaire, comme suit:
+--+
| |
+---+ +----+ |
| | | |
+---+ +-------+
~/two.txt
Simple et fiable: deux boucles ASCII pour le numéro 2. Malheureusement, ces choses ont tendance à s'emmêler au fil du temps et maintenant j'ai du mal à déterminer le nombre de boucles dans chaque fichier. Voici quelques exemples que j'ai élaborés à la main:
Une:
+---+
| |
+--+ |
| |
+--+ |
| |
| |
| |
+--+ +--+
| |
+---------+
Trois:
+---------+
| +-----+ |
| | +-+ | |
| | | | | |
| | +-+ | |
| +-----+ |
+---------+
Quatre:
+--------------+
| +--+ +--+ |
| | | | | |
+-|-----|-----|----+
| | | | | | | |
| +--+ +--+ +--+ |
+------------------+
+------------+
| |
+-----+ +-----+ |
| | | |
+-----|-----------+ | |
| | +--+ | | | |
+-+ +--|--|--+ +---------+
| | +-+ | | |
+------+ | | | |
+-------+ | |
|| | |
|+-----+
| |
+---+
Cinq:
+--------+ +--------+ +--------+
| | | | | |
| +--|-----+ +--|-----+ |
| | | | | | | | | |
+-----|--+ +-----|--+ +--------+
| | | |
+--------+ +--------+
Pouvez-vous m'aider à compter mes boucles?
Voici les règles:
- Comme je stocke tout dans unaire codé ASCII, l'efficacité de l'espace est très importante pour moi. Par conséquent, c'est le golf de code. Le plus petit programme en octets gagne.
- Les boucles sont dessinées avec les caractères +, -, |. Chaque coin de la boucle est dessiné sans ambiguïté: exactement l'un des caractères au-dessus et en dessous du + sera |, et exactement un à droite ou à gauche sera -. Deux marques + ne sont jamais adjacentes.
- Les brins peuvent passer les uns sur les autres. Lorsque les brins se croisent, vous pourrez voir le brin "sous" immédiatement des deux côtés du brin "au-dessus".
- Votre programme doit prendre une représentation sous forme de chaîne de la boucle (à partir de stdin ou en tant que paramètre de fonction) et produire un nombre (soit à stdout, soit comme valeur de retour).
- Les longueurs de ligne peuvent ne pas être uniformes dans le dessin de la boucle et il peut y avoir des espaces de fin sur chaque ligne.
- Vous pouvez supposer qu'il y a au moins une boucle dans l'entrée.
Je compte sur vous!
+
?