Powinieneś napisać program lub funkcję, która odbiera ciąg znaków jako dane wejściowe i wyjściowe lub zwraca, jeśli dane wejściowe są drzewem ASCII.
_
\/ /
\_/
|
|
Drzewa ASCII składają się z znaków / \ | _ spacesi newlines.
Nie-białe znaki łączą dwa punkty krawędzi ich komórek za pomocą segmentu linii:
/łączy lewy dolny i prawy górny róg\łączy prawy dolny i górny lewy róg|łączy środkowe punkty dolnej i górnej krawędzi_łączy lewy dolny i prawy dolny róg ze środkowym punktem dolnej krawędzi
(Należy pamiętać, że oznacza to, że |może łączyć się tylko z |albo _, ale nie z /lub \.)
Obraz ASCII jest nazywany drzewem, jeśli mają zastosowanie następujące reguły:
- Dokładnie jeden punkt (pierwiastek) dokładnie jednego znaku dotyka dolnej krawędzi ostatniego rzędu.
Możesz dotrzeć do dowolnego punktu dowolnego segmentu linii poprzez:
- zaczynając od korzenia
- używając tylko segmentów linii
- nigdy nie idąc w dół (nawet w dół w dół)
Wejście
- Ciąg znaków składający się ze znaków
/ \ | _ spaceinewlinezawierający co najmniej jeden znak spacji. Możesz wybrać dwa formaty wejściowe:
- Brak zbędnych białych znaków wokół drzewa (jak pokazano w przykładach).
- Żadnych niepotrzebnych białych znaków wokół drzewa (jak pokazano w przykładach), z wyjątkiem spacji po prawej stronie rzędów, aby wszystkie rzędy miały tę samą długość.
Końcowy znak nowej linii jest opcjonalny.
Wynik
- Spójna prawdziwa wartość, jeśli dane wejściowe są drzewem ascii.
- Spójne falsy wartość jeśli wejście nie jest drzewo ASCII.
Przykłady
Prawidłowe drzewa:
|
_
\/ /
\_/
|
|
/ / \/
\ \____/
\/
/
/
\___/
/ \
\___/
|
|
__/
_/
/
____
\ ___
\ \/
\/\_____/
\/ \/
\__/
|
|
Nieprawidłowe drzewa (z dodatkowymi objaśnieniami, które nie stanowią części danych wejściowych):
\/
\_______/
\__ /
| \_/ <- reachable only on with downward route
|
_ <- multiple roots
\/ <- multiple root characters
/\ <- multiple roots
| <- unreachable part
|
__/
/ <- unreachable parts
|
\____/
| | <- multiple roots
_\__/ <- unreachable parts (_ and \ don't connect to each other)
|
To jest golf golfowy, więc wygrywa najkrótszy wpis.