In Super Mario Galaxy gibt es zwei rhombicuboctahedron-förmige * Planeten, die mit Plattformen gekachelt sind, die schrumpfen, wenn Mario überquert wird . Sollte Mario in ein dreieckiges Loch oder in eine Lücke fallen, die ein zuvor berührtes Plättchen hinterlassen hat, wird er vom schwarzen Loch im Kern verzehrt. (Siehe: Eile-Scurry-Galaxie , Sea Slide-Galaxie )
Bild: MarioWiki.com
(Sie können sich den Planeten als einen 2x2x2-Würfel vorstellen, dessen Gesichter durch 2x3 "Brücken" voneinander getrennt und miteinander verbunden wurden.)
Da mein Controller sehr kaputt ist, kann Mario leider nicht springen und ist auf die vier Hauptrichtungen beschränkt. Außerdem bewegt sich Mario sehr langsam und kann nicht einmal einen Schritt zurückverfolgen, ohne dass die Plattform hinter ihm verschwindet.
Nehmen wir an, die Kamera befindet sich immer über Marios Kopf und er beginnt rechts unten auf einem 2x2-Gesicht:
■ ■
■ ■
■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ M ■ ■ ■
■ ■
■ ■
■ ■
Ihr Programm enthält eine Liste oder eine Reihe von Anweisungen U
D
L
R
(oben, unten, links, rechts), die Marios Umrundung des Planeten in mehreren Schritten darstellen. Das Programm kann eine von zwei verschiedenen Ausgaben ausgeben: eine, die darstellt, dass Mario noch lebt und läuft, und die andere, die darstellt, dass Mario irgendwo auf seinem Weg in den schrumpfenden Satelliten gefallen ist.
RR: ■ ■ RRD: ■ ■ RRL: ■ ■
■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ □ □ M ■ ■ ■ ■ ■ □ □ □ ■ ■ ■ ■ ■ □ M □ ■
■ ■ \ ■ ■ M ■ ■ \
■ ■ Let's-a go! ■ ■ \ ■ ■ W-aaaaaaaaaahh!
■ ■ ■ ■ W-aaaaaaaaaahh! ■ ■
Natürlich müssen Sie im Gegensatz zu den obigen Diagrammen die 3D berücksichtigen. Hier ist ein Diagramm, das Ihnen helfen könnte, das Szenario besser zu visualisieren:
Top 2x2 face
<- clockwise anticlockwise ->
- ■ - ■ - ■ - ■ -
/ \ / \ / \ / \
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ Left and right
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ M ■ ■ ■ ■ ■ ■ ■ ■ ■ edges wrap around.
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
\ / \ / \ / \ /
- ■ - ■ - ■ - ■ -
<- anticlockwise clockwise ->
Bottom 2x2 face
Nach diesem Diagramm UUUUURRRR
könnte es also so aussehen:
- ■ - ■ - □ - ■ -
/ \ / \ / \ / \
■ ■ ■ ■ □ □ ■ ■
■ ■ ■ ■ □ □ ■ ■
■ ■ ■ ■ □ □ ■ ■
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ □ ■ ■ ■ M ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ □ ■ ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
\ / \ / \ / \ /
- ■ - ■ - ■ - ■ -
Und UUUUUUUUULURRRRRR
könnte so aussehen:
- ■ - ■ - □ - □ -
/ \ / \ / \ / \
■ ■ ■ ■ □ ■ ■ □
■ ■ ■ ■ □ ■ ■ □
-> □ ■ ■ ■ □ ■ ■ □ ->
<- □ ■ ■ ■ ■ ■ ■ ■ ■ ■ □ ■ ■ ■ M □ □ □ □ □ <-
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ □ ■ ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
\ / \ / \ / \ /
- ■ - ■ - ■ - ■ -
Möge das kürzeste Programm in Bytes w-aaaaaaaaahh!
Testfälle
Ausgang 1: noch am Leben
DDDDDLUUUUU
- Mario geht über eine Brücke und zurück.
RRRRDDDDLLL
- Mario geht in einem Dreieck.
LLLLLLUUUUUURRRRR
- Mario geht in einem größeren Dreieck.
ULLDRDDDRU
- Mario gerät in Gefahr.
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRR
- Mario geht einen unkonventionellen Weg ... und gerät in Gefahr.
Mario überquert jedes Plättchen genau einmal.
DDDDLUUUULLLLDDDLUUULLLLDDDDLUUUULLLLDDDLUUULLLURRRUUURDDDRRRRUUURDDDRRRRUUURDDDRRRRUUUUURDDDDD
DLDRDLDLLLDRRRDDDDLLLLLLLLLDRRRRRRRRRDDDDLLLDRRRDDDRUUURRRRULLLLUUUURRRULLLUUUUURDRURDRUURULURU
Ausgang 2: W-aaaaaaaaaahh!
LLR
- Mario versucht einen Schritt zurückzuverfolgen und fällt ab.
UULDR
- Mario versucht zweimal eine Fliese zu überqueren und tritt in die Luft.
RRDDDDD
- Mario geht beim ersten D von einer Brücke (ignoriere alle folgenden Schritte).
RRRRDDDDLLLL
- Mario geht im Dreieck und fällt durch das Startplättchen.
LLLLLLUUUUUURRRRRR
- Mario geht in einem größeren Dreieck und fällt durch das Startplättchen.
UUUUUUUUUUUUUUUUUUUU
- Mario umrundet den Planeten und fällt durch das Startplättchen.
RURDRURDRDLDRDLDLDLULDLLUU
- Mario geht einen unkonventionellen Weg und wird desorientiert.
Mario, der die Gefahr erkennt, in der er sich befindet, hat keine andere Wahl.
ULLDRDDDRUUU
ULLDRDDDRUUL
ULLDRDDDRUUR
ULLDRDDDRUUD
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRR
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRU
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRL
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRD
Kopieren Sie abschließend einen beliebigen Testfall aus "Mario kreuzt jedes Plättchen genau einmal" und ändern oder fügen Sie einen Schritt nach dem Zufallsprinzip hinzu. Mario sollte fallen. (Wenn Sie einen Schritt zum Ende hinzufügen, fällt Mario, um den Power Star zu ergreifen!)
* Cantellated Würfel wäre ein richtigerer Begriff, da einige Gesichter nicht quadratisch sind, aber Sie müssen zugeben - "Rhombicuboctahedron" fließt besser.
quelle
R
. Ich habe dies auf Papier ausgearbeitet, um sicherzustellen, dass mein Code korrekt ist.Antworten:
Ruby, Golf,
244230 BytesScheint gut zu funktionieren, wird ein bisschen mehr testen.
Ruby, erste Arbeitsversion, 260 Bytes
Probieren Sie es online aus
Lambda-Funktion, die ein Zeichenfolgenargument verwendet. Gibt 4 für lebendig, 0 für tot zurück.
Erläuterung
Die Tafel ist in 6 Streifen der Größe 2x8 aufgeteilt, die durch die Zeichen
/\
undO
unten dargestellt werden. Diese werden auf eine 24 * 8 2D-Karte abgebildet, wobei x = (Streifennummer) * 4 + (horizontale Position auf dem Streifen) und y = vertikale Position auf dem Streifen.Diese werden in einem Array von 8 Binärzahlen gespeichert, sodass x nach links und y nach unten zunimmt.
Das Array wird mit 8 Kopien der Nummer initialisiert
0x33333333
. Dies bildet die Quadrate, auf die Mario treten darf. Während sich Mario um das Feld bewegt, auf dem er sich befindet, wird es auf Null gesetzt, und das Feld, auf das er sich bewegt, wird getestet - er lebt, es enthält eine 1 und stirbt, wenn es eine 0 enthält.Wenn Mario vom oberen oder unteren Ende des Strips geht, auf dem er sich befindet, wechselt er zu einem anderen Strip. Wenn er die Seite des Streifens verlässt, auf der er sich befindet, wenn er sich auf einem Feld mit y = 3 oder y = 4 befindet, bewegt er sich zu einem anderen Streifen. Wenn y nicht 3 oder 4 ist, bewegt er sich nicht auf einen anderen Streifen und landet auf einem Feld, auf dem von Beginn des Spiels an 0 war, sodass er stirbt.
Da sich die Kamera immer über Marios Kopf befindet, muss der Richtungsbezug bei jedem Streifenwechsel um 90 Grad gedreht werden.
Ungolfed im Testprogramm
quelle