クラッシュすることなくループできますか?

私たちの多くはTronのゲームに精通しています。グリッドに配置された「ライトサイクル」を制御します。ライトサイクルは常に前方に移動します(方向は制御しますが)。あなたがトレイルに走れば、あなたはクラッシュします!

ここでの目標は、指定されたパスが有効なループかどうかを判断することです。つまり、
“クラッシュする”ことなく開始点に戻ります。これを行うには、ポイント(0,0)から開始するとします。入力は一連の基本方向(
NnorthE )は
N2E1S2W1 の形式で与えられます。 east
など)、それぞれにその方向に進むための距離が続きます。この例では、

N2 : North 2 to (0,2)
E1 : East 1  to (1,2)
S2 : South 2 to (1,0)
W1 : West 1  to (0,0)

パスが(0,0)で終わると、他の座標を何度も訪れずにパスが有効とみなされます((0,0)開始し、最後に1回)。上記の例よりも、(0,0)から(0,2)になるためには、必ず(0,1)も同様です。

その他の例:

input        -> output
N1E1S1W1     -> true
N1E1N1E1S2W2 -> true
N1S1E1W1     -> false    //Visits (0,0) 3 times
N4E2S2W4S2E2 -> false    //Visits (0,2) twice
N3E2S3       -> false    //Does not return to (0,0)
N1S1         -> anything  //I don't care how you evaluate this case

真実または偽の値に対して同じ出力を出す限り、出力はどのような形式でも構いません。

入力は、 S1N2E3 …または SNNEEE
の形式で文字列または文字のリストとして取ることができます。グリッドのサイズは、入力が何もオーバーフローしないと仮定します。コードが根本的に健全な限り、
N99999999999999 のようなケースを処理することは重要ではありません。

注:好きなように N1S1E1W1
S1N1W1E1
の場合を評価することができます。彼らは技術的に有効な道ですが、チャレンジの「トロン」精神に反するものです。

スコアリング

This is ,
so the shortest answer wins!

ベストアンサー

Pyth, 44 39 bytes

&!eJsM._smm^.j)x"NESW"hdstd:z".d+"1{IJ

Test suite.

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です