Eu tenho um problema sério Eu tenho alguns arquivos de texto onde guardo meus números muito importantes - todos os importantes! E dois e três ..
Esses números eram tão importantes que eu não os podia confiar nos novos sistemas de números decimais ou binários. Eu mantive cada número codificado em unário, da seguinte forma:
+--+
| |
+---+ +----+ |
| | | |
+---+ +-------+
~/two.txt
Simples e confiável: dois loops ASCII para o número 2. Infelizmente, essas coisas tendem a se complicar ao longo do tempo e agora tenho dificuldade em descobrir quantos loops existem em cada arquivo. Aqui estão alguns exemplos que trabalhei à mão:
1:
+---+
| |
+--+ |
| |
+--+ |
| |
| |
| |
+--+ +--+
| |
+---------+
Três:
+---------+
| +-----+ |
| | +-+ | |
| | | | | |
| | +-+ | |
| +-----+ |
+---------+
Quatro:
+--------------+
| +--+ +--+ |
| | | | | |
+-|-----|-----|----+
| | | | | | | |
| +--+ +--+ +--+ |
+------------------+
+------------+
| |
+-----+ +-----+ |
| | | |
+-----|-----------+ | |
| | +--+ | | | |
+-+ +--|--|--+ +---------+
| | +-+ | | |
+------+ | | | |
+-------+ | |
|| | |
|+-----+
| |
+---+
Cinco:
+--------+ +--------+ +--------+
| | | | | |
| +--|-----+ +--|-----+ |
| | | | | | | | | |
+-----|--+ +-----|--+ +--------+
| | | |
+--------+ +--------+
Você pode me ajudar a contar meus loops?
Aqui estão as regras:
- Como guardo tudo no unário codificado em ASCII, a eficiência do espaço é muito importante para mim. Portanto, isso é código de golfe. O menor programa em bytes vence.
- Os loops são desenhados com os caracteres +, -, |. Todos os cantos do loop são desenhados sem ambiguidade: exatamente um dos caracteres acima e abaixo do + será |, e exatamente um à direita ou à esquerda será -. Duas marcas + nunca são adjacentes.
- Os fios podem passar um por cima do outro. Quando as mechas se cruzam, você pode ver a mecha "under" imediatamente em ambos os lados da mecha "over".
- Seu programa deve usar uma representação de string do loop (a partir de stdin ou como um parâmetro de função) e produzir um número (para stdout ou como um valor de retorno).
- Os comprimentos das linhas podem não ser uniformes no desenho do loop e pode haver espaços à direita em cada linha.
- Você pode assumir que há pelo menos um loop na entrada.
Estou contando com você!
+
?