スーパーマリオギャラクシーは、マリオが走るにつれて縮小するプラットフォームでタイル張りされた2つの菱形八面体形*の惑星を備えています。マリオが三角形の穴または以前に触れたタイルによって残された隙間に落ちた場合、彼はコアのブラックホールによって消費されます。(ウォッチ: Hurry-Scurry Galaxy、 Sea Slide Galaxy)
(惑星は、2x3の "ブリッジ"で面が切り離されて互いに接続された2x2x2の立方体と考えることができます。)
残念ながら、私のコントローラーは非常に壊れているため、マリオはジャンプできず、4つの基本的な方向に制限されています。さらに、マリオは非常にゆっくりと移動し、最初に彼の後ろのプラットフォームが消えない限り、1歩でも戻ることができません。
カメラは常にマリオの頭の上にあり、マリオは2x2の顔の右下から開始すると仮定します。
■ ■
■ ■
■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ M ■ ■ ■
■ ■
■ ■
■ ■
あなたのプログラムはU
D
L
R
、マリオが惑星を歩き回る一連のステップを表す、リストまたは一連の方向(上、下、左、右)を取ります。プログラムは、2つの異なる出力の1つを出力できます。1つは、マリオがまだ生きて歩いていることを表し、もう1つは、彼の散歩のどこかでマリオが収縮衛星に落ちたことを表します。
RR: ■ ■ RRD: ■ ■ RRL: ■ ■
■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ □ □ M ■ ■ ■ ■ ■ □ □ □ ■ ■ ■ ■ ■ □ M □ ■
■ ■ \ ■ ■ M ■ ■ \
■ ■ Let's-a go! ■ ■ \ ■ ■ W-aaaaaaaaaahh!
■ ■ ■ ■ W-aaaaaaaaaahh! ■ ■
もちろん、上記の図とは異なり、3Dを考慮する必要があります。シナリオをよりよく視覚化するのに役立つ図を次に示します。
Top 2x2 face
<- clockwise anticlockwise ->
- ■ - ■ - ■ - ■ -
/ \ / \ / \ / \
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ Left and right
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ M ■ ■ ■ ■ ■ ■ ■ ■ ■ edges wrap around.
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
\ / \ / \ / \ /
- ■ - ■ - ■ - ■ -
<- anticlockwise clockwise ->
Bottom 2x2 face
したがって、この図によれば、次のUUUUURRRR
ようになります。
- ■ - ■ - □ - ■ -
/ \ / \ / \ / \
■ ■ ■ ■ □ □ ■ ■
■ ■ ■ ■ □ □ ■ ■
■ ■ ■ ■ □ □ ■ ■
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ □ ■ ■ ■ M ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ □ ■ ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
\ / \ / \ / \ /
- ■ - ■ - ■ - ■ -
そしてUUUUUUUUULURRRRRR
、このように見えるかもしれません:
- ■ - ■ - □ - □ -
/ \ / \ / \ / \
■ ■ ■ ■ □ ■ ■ □
■ ■ ■ ■ □ ■ ■ □
-> □ ■ ■ ■ □ ■ ■ □ ->
<- □ ■ ■ ■ ■ ■ ■ ■ ■ ■ □ ■ ■ ■ M □ □ □ □ □ <-
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ □ ■ ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
\ / \ / \ / \ /
- ■ - ■ - ■ - ■ -
最短プログラムがバイト単位でw-aaaaaaaaaahh!
テストケース
出力1:まだ生きています
DDDDDLUUUUU
-マリオは橋を渡って歩いて戻ります。
RRRRDDDDLLL
-マリオは三角形で歩きます。
LLLLLLUUUUUURRRRR
-マリオはより大きな三角形を歩きます。
ULLDRDDDRU
-マリオは危険にさらされます。
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRR
-マリオは型破りなルートをたどります...そして危険にさらされます。
マリオは、すべてのタイルを1回だけクロスします。
DDDDLUUUULLLLDDDLUUULLLLDDDDLUUUULLLLDDDLUUULLLURRRUUURDDDRRRRUUURDDDRRRRUUURDDDRRRRUUUUURDDDDD
DLDRDLDLLLDRRRDDDDLLLLLLLLLDRRRRRRRRRDDDDLLLDRRRDDDRUUURRRRULLLLUUUURRRULLLUUUUURDRURDRUURULURU
出力2:W-aaaaaaaaaahh!
LLR
-マリオはステップをたどろうとし、脱落します。
UULDR
-マリオはタイルを2回横切り、空中に飛び込もうとします。
RRDDDDD
-最初のDでマリオが橋から降ります(以下の手順は無視してください)。
RRRRDDDDLLLL
-マリオは三角形を歩き、開始タイルを抜けます。
LLLLLLUUUUUURRRRRR
-マリオは大きな三角形を歩き、開始タイルを抜けます。
UUUUUUUUUUUUUUUUUUUU
-マリオは惑星の周りを歩き回り、開始タイルを抜けます。
RURDRURDRDLDRDLDLDLULDLLUU
-マリオは型破りなルートを取り、混乱します。
マリオは、彼がいる危険に気づいて、選択の余地がありません。
ULLDRDDDRUUU
ULLDRDDDRUUL
ULLDRDDDRUUR
ULLDRDDDRUUD
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRR
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRU
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRL
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRD
最後に、「マリオがすべてのタイルを1回だけクロス」からテストケースをコピーし、ランダムに1ステップ変更または追加します。マリオが落ちるはずです。(最後にステップを追加すると、マリオが落ちてパワースターをつかむ!)
* 角張った立方体は、一部の面が正方形ではないため、より正確な用語になりますが、「菱形立方八面体」の流れが良くなることを認めなければなりません。
R
。コードが正しいことを確認するために、紙の上でこれを解決しました。