サイコロを転がす
だから、私はさっきサイコロを転がしていて、挑戦を考えていました。
入力と動きのリストから取得されたネットを持つキューブが与えられたら、最後の下部にある正方形を見つけます。
ここでは例としてこの画像を使用します。
入力
動きのリストで文字列を受け取ります。文字列には大文字のASCII文字N、S、W、およびEのみが含まれます。これらは、キューブをその方向に1ステップ移動することに対応します。
写真では、1つのNが底面を6にします。この画像では、北がカメラから離れ、南が向かっており、東が右、西が左です。
また、次の形式の文字列を受け取ります。1P2P 3P 4P 5P 6P。ここで、各PはN、S、W、E、T、およびBの位置です。TおよびBは下と上です。
数字はその数字の顔であり、文字は顔の位置を表します。明確でない場合、ネットは常に数字で順序付けられるため、1P 2P 3P 4P 5P 6P、決して2B 1T 3N 4S 5W 6E。
画像内の位置は1S 2B 3E 4W 5T 6Nです。
出力
プログラムは、下側を表す数値を出力する必要があります。
テストケース
(nothing), 1S 2B 3E 4W 5T 6N -> 2
N, 1S 2B 3E 4W 5T 6N -> 6
NS, 1S 2B 3E 4W 5T 6N -> 2
NWS, 1S 2B 3E 4W 5T 6N -> 2
NWSNWS, 1S 2B 3E 4W 5T 6N -> 2
NWSS, 1S 2B 3E 4W 5T 6N -> 3
NNNNNN, 1S 2B 3E 4W 5T 6N -> 5
SNWEEWS, 1N 2T 3E 4W 5B 6S, 6
SNEEWS, 1N 2T 3W 4S 5B 6E, 4
その他の規則
また、立方体が無限の平面上にあり、おそらく何らかの摩擦があると仮定することもできます。
標準の抜け穴は、私が見つけられなくても許可されていません。
無効な入力の場合、コードは黙示録を開始する以外は何でもできます。
このプログラムは私のサイコロに収まるはずなので、できるだけ小さくする必要があります。Foldersのような言語の場合を除き、バイト単位でカウントします。
(nothing) -> 2
ネットが提供されていないことを意味しますか、それともどこかにネットがあるはずですか?