私たちの多くは、Tronというゲームに精通しています。グリッドに配置された「ライトサイクル」を制御します。ライトサイクルは常に前方に移動し(方向を制御しますが)、その背後に永続的なトレイルを残します。トレイルにぶつかると、クラッシュします!
ここでの目標は、特定のパスが有効なループであるかどうか、つまり「クラッシュ」せずに開始点に戻るかどうかを判断することです。これを行うために、ポイントから開始すると仮定し(0,0)ます。入力はN2E1S2W1、一連の基本方向(Nis north、Eis 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)に2回以上アクセスすることなく終了する場合に有効と見なされます(正確に2回アクセスします。開始時に1回、終了時に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
出力は、trueまたはfalseの値に対して同じ出力を提供する限り、どのような形式でもかまいません。
入力は、S1N2E3...またはSNNEEE... の形式で、文字列または文字のリストとして取得できます。グリッドサイズには厳密な制限もありませんが、入力がオーバーフローしないことを前提としています。コードが基本的に健全である限り、などのケースを処理することは重要ではありませんN99999999999999。
注:ケースを評価することができるN1S1、E1W1、S1N1、とW1E1しかし、あなたがしたいと思います。それらは技術的には有効なパスですが、チャレンジの「トロン」精神に反します。
得点
これはcode-golfなので、最短の答えが勝ちです!
Nように1j、Eなど1、Sなど-1j、とWて-1?
N99999999999999
N1S1定義に一致するのは(0, 0)2回と(0, 1)1回であり、これは定義のもとで有効であるためです。