Wyzwanie
Utwórz funkcję, która po wprowadzeniu danych ASCII (kierowanie ścieżką, która może ostatecznie zapętlić), wyświetla długość pętli (jeśli taka istnieje) i długość „ogona” prowadzącego do pętli w jednym z formularze poniżej.
Wejście
Dane wejściowe należy przekazać do funkcji. Poniżej znajduje się przykład prostego wejścia.
# --> # --> #
^ |
| |
| v
# <-- #
Możesz wizualizować powyższe bloki w ten sposób
„Ogon” jest jednym przedmiotem, a pętla ma cztery długości.
Trudniejszy:
# --> # --> #
^ |
| |
| v
# --> # <-- # # --> #
^ ^ |
| | |
| | v
# --> # # <-- # <-- #
Wynik
Musisz wyprowadzać dane przez STDOUT lub najbliższą alternatywę dla twojego języka.
Dwie wyjściowe liczby całkowite powinny mieć długość ogona i długość pętli. Ten wynik może mieć dwie formy.
- ciąg rozdzielany spacjami:
"2 10"
- tablica liczb całkowitych:
[2, 10]
Zasady
Każdy blok, lub
#
, będzie miał tylko jedną ścieżkę od siebie.Każda strzała to dwa segmenty linii i jedna głowa.
Blok początkowy zawsze będzie znajdować się w lewej kolumnie.
Wejście nigdy nie będzie tylko pętlą.
Przykład
# --> # --> # --> #
^ ^ |
| | |
| | v
# # <-- # <-- #
Ten ma długość ogona 2 i długość pętli 6. Poniżej ogon i pętla są oddzielone.
Ogon
# -->
^
|
|
#
Pętla
# --> # --> #
^ |
| |
| v
# <-- # <-- #
Prawidłowe dane wyjściowe to [2, 6]
i "2 6"
.
Jeśli wejście jest tylko ogonem , długość pętli wynosi zero.
# --> # --> # --> #
|
|
v
<-- # <-- #
Prawidłowe dane wyjściowe dla powyższego wejścia to [6, 0]
i"6 0"