O desafio
Crie uma função que, quando recebida uma entrada da arte ASCII (direcionando um caminho que possa eventualmente fazer um loop), produza o comprimento do loop (se houver) e o comprimento da "cauda" que leva ao loop em um dos formulários abaixo.
Entrada
Sua entrada deve ser passada para uma função. Abaixo está um exemplo de uma entrada simples.
# --> # --> #
^ |
| |
| v
# <-- #
Você pode visualizar os blocos acima como este
A "cauda" é um item, enquanto o loop tem quatro longos.
Um mais difícil:
# --> # --> #
^ |
| |
| v
# --> # <-- # # --> #
^ ^ |
| | |
| | v
# --> # # <-- # <-- #
Resultado
Você deve enviar pelo STDOUT ou a alternativa mais próxima do seu idioma.
Seus dois números inteiros de saída devem ser o comprimento da cauda e o comprimento do loop. Esta saída pode estar em duas formas.
- uma sequência delimitada por espaço:
"2 10"
- uma matriz de números inteiros:
[2, 10]
Regras
Cada bloco, ou
#
, terá apenas um único caminho de distância .Cada flecha tem dois segmentos de linha e uma cabeça.
O bloco inicial estará sempre na coluna mais à esquerda.
A entrada nunca será apenas um loop.
Exemplo
# --> # --> # --> #
^ ^ |
| | |
| | v
# # <-- # <-- #
Este tem um comprimento de cauda de 2 e um comprimento de loop de 6. Abaixo, o rabo e o loop são separados.
Rabo
# -->
^
|
|
#
Ciclo
# --> # --> #
^ |
| |
| v
# <-- # <-- #
As saídas corretas são [2, 6]
e "2 6"
.
Se a entrada for apenas uma cauda , o comprimento do loop será zero.
# --> # --> # --> #
|
|
v
<-- # <-- #
As saídas corretas para a entrada acima são [6, 0]
e"6 0"