チャレンジ
ASCIIアートの入力(最終的にループする可能性のあるパスを指示する)が与えられると、ループの長さ(ある場合)およびループのいずれかにある「テール」の長さを出力する関数を作成します。以下のフォーム。
入力
入力を関数に渡す必要があります。以下は、単純な入力の例です。
# --> # --> #
^ |
| |
| v
# <-- #
上記のブロックは次のように視覚化できます
「尾」は1つのアイテムで、ループは4つの長さです。
より難しいもの:
# --> # --> #
^ |
| |
| v
# --> # <-- # # --> #
^ ^ |
| | |
| | v
# --> # # <-- # <-- #
出力
STDOUTまたは言語の最も近い代替手段を介して出力する必要があります。
2つの出力整数は、テールの長さとループの長さでなければなりません。この出力には2つの形式があります。
- スペース区切りの文字列:
"2 10"
- 整数の配列:
[2, 10]
ルール
すべてのブロック、またはは、それ自体から離れる単一のパス
#
のみを持ちます。すべての矢印は2つの線分と1つの頭です。
開始ブロックは常に左端の列にあります。
入力がループになることはありません。
例
# --> # --> # --> #
^ ^ |
| | |
| | v
# # <-- # <-- #
これのテール長は2で、ループ長は6です。以下では、テールとループが分離されています。
尾
# -->
^
|
|
#
ループ
# --> # --> #
^ |
| |
| v
# <-- # <-- #
正しい出力がある[2, 6]
と"2 6"
。
入力がtailのみの場合、ループ長はゼロです。
# --> # --> # --> #
|
|
v
<-- # <-- #
上記入力のための正しい出力である[6, 0]
と"6 0"