アリは、ワイヤフレームキューブのエッジ(面ではなく)に沿って歩きます。遭遇する各頂点は、2つの新しいエッジが分岐するフォークを提示します。アリはどちらの方向に曲がるleft
かを選択します- またはright
。これらの方向は、頂点に向かい、立方体の外側にいるアリに相対的です。あなたの目標は、アリがとったleft
/ right
選択のシーケンスから、それが開始したのと同じ位置で終了するかどうかを判断することです。
たとえば、アリが4回左に曲がった場合(left left left left
)、反時計回りに四角を横切り、開始した場所で終了します。しかし、それが進むleft left left left right
と、キューブ上の別の場所で終了します。また、それが進む場合left right right right left
、開始エッジで終了しますが、反対側の頂点に面しますが、同じ位置としてカウントされません。
アリのパスは、開始したエッジを含むエッジを繰り返す場合がありますが、重要なのは、シーケンス全体の後に終了する場所です。
アリのターンシーケンスを受け取り、アリがシーケンスの後に開始位置に戻ったかどうかを出力する名前付き関数を作成します。名前のない関数を変数に割り当てるだけで、名前の付いた関数にできます。
編集変数。)
入力
選択した形式で表される、長さを含む一連のleft
/ right
決定。これは、文字の文字列/ 、数字のリスト/ 、またはブール値の配列です。コードに役立つメソッド名や文字列にすることなど、安っぽいものはありません。0
31
R
L
1
-1
以下のテストケースと異なる場合は、テストケースを形式で投稿してください。
出力
True
/ False
、0
/ 1
、またはあなたの言語の類似物。
受賞基準
最少バイトが勝ちます。名前付き関数を指定する必要があることを忘れないでください。関数の外にコードを置くこともできますが、それらのバイトもカウントされます。複数回呼び出された場合、関数は正しく動作するはずです。
テストケース
True
ケース(1行に1つ、2つ目は空のリスト):
1 1 1 1
-1 -1 -1 -1
1 -1 1 -1 1 -1
1 1 -1 -1 1 1 -1 -1
-1 1 1 -1 -1 1 1 -1
1 1 1 -1 -1 -1 -1 1
1 -1 -1 1 -1 -1
1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1
-1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
False
ケース(1行に1つ):
1
1 1
1 1 1
-1 1
1 -1 -1 -1 1
1 -1 -1 1 1
-1 1 -1 1
1 1 1 1 -1
-1 -1 1 -1 1 -1 -1 1
1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1
これはL
、R
「s 」と「s 」を使用した同じテストケースです。
True
ケース:
RRRR
LLLL
RLRLRL
RRLLRRLL
LRRLLRRL
RRRLLLLR
RLLRLL
RRRRLLLLRLLRLL
LLLRLLRRLRLRRRRRRRRRRRRRRRRR
False
ケース:
R
RR
RRR
LR
RLLLR
RLLRR
LRLR
RRRRL
LLRLRLLR
RLRRRRLLLRRLLL
追加クレジットチャレンジ
同じことですが、立方体ではなく十二面体を使用しています。アイデアについては、ハンプザワンパスをご覧ください。