Super Mario Galaxy presenta dosplanetas con forma de rombocuboctaedro * en mosaico con plataformas que se encogen a medida que Mario se cruza. Si Mario cae en un agujero triangular o en un espacio dejado por un azulejo que tocó anteriormente, el agujero negro en el núcleo lo consumirá. (Ver: Galaxy apresurada , galaxia de Sea Slide )
Imagen: MarioWiki.com
(Puedes pensar en el planeta como un cubo de 2x2x2 cuyas caras se han separado y conectado entre sí mediante 2x3 "puentes").
Desafortunadamente, dado que mi controlador está muy roto, Mario no puede saltar y está limitado a las cuatro direcciones cardinales. Además, Mario se mueve muy lentamente y no puede retroceder ni un solo paso sin que primero desaparezca la plataforma detrás de él.
Supongamos que la cámara siempre está por encima de la cabeza de Mario y comienza en la parte inferior derecha de una cara de 2x2:
■ ■
■ ■
■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ M ■ ■ ■
■ ■
■ ■
■ ■
Su programa tomará una lista o cadena de direcciones, U
D
L
R
(arriba, abajo, izquierda, derecha), que representa la caminata de Mario alrededor del planeta hasta una serie de pasos. El programa puede generar una de dos salidas distintas: una que representa que Mario todavía está vivo y caminando, y la otra que representa que en algún momento de su caminata, Mario ha caído en el Satélite Reductor.
RR: ■ ■ RRD: ■ ■ RRL: ■ ■
■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ □ □ M ■ ■ ■ ■ ■ □ □ □ ■ ■ ■ ■ ■ □ M □ ■
■ ■ \ ■ ■ M ■ ■ \
■ ■ Let's-a go! ■ ■ \ ■ ■ W-aaaaaaaaaahh!
■ ■ ■ ■ W-aaaaaaaaaahh! ■ ■
Por supuesto, a diferencia de los diagramas anteriores, tendrá que tener en cuenta el 3D. Aquí hay un diagrama que puede ayudarlo a visualizar mejor el escenario:
Top 2x2 face
<- clockwise anticlockwise ->
- ■ - ■ - ■ - ■ -
/ \ / \ / \ / \
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ Left and right
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ M ■ ■ ■ ■ ■ ■ ■ ■ ■ edges wrap around.
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
\ / \ / \ / \ /
- ■ - ■ - ■ - ■ -
<- anticlockwise clockwise ->
Bottom 2x2 face
Entonces, de acuerdo con este diagrama, UUUUURRRR
podría verse así:
- ■ - ■ - □ - ■ -
/ \ / \ / \ / \
■ ■ ■ ■ □ □ ■ ■
■ ■ ■ ■ □ □ ■ ■
■ ■ ■ ■ □ □ ■ ■
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ □ ■ ■ ■ M ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ □ ■ ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
\ / \ / \ / \ /
- ■ - ■ - ■ - ■ -
Y UUUUUUUUULURRRRRR
podría verse así:
- ■ - ■ - □ - □ -
/ \ / \ / \ / \
■ ■ ■ ■ □ ■ ■ □
■ ■ ■ ■ □ ■ ■ □
-> □ ■ ■ ■ □ ■ ■ □ ->
<- □ ■ ■ ■ ■ ■ ■ ■ ■ ■ □ ■ ■ ■ M □ □ □ □ □ <-
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ □ ■ ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
\ / \ / \ / \ /
- ■ - ■ - ■ - ■ -
¡Que el programa más corto en bytes w-aaaaaaaaaahh!
Casos de prueba
Salida 1: todavía vivo
DDDDDLUUUUU
- Mario cruza un puente y regresa.
RRRRDDDDLLL
- Mario camina en un triángulo.
LLLLLLUUUUUURRRRR
- Mario camina en un triángulo más grande.
ULLDRDDDRU
- Mario se pone en peligro.
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRR
- Mario toma una ruta poco convencional ... y se pone en peligro.
Mario cruza cada ficha exactamente una vez.
DDDDLUUUULLLLDDDLUUULLLLDDDDLUUUULLLLDDDLUUULLLURRRUUURDDDRRRRUUURDDDRRRRUUURDDDRRRRUUUUURDDDDD
DLDRDLDLLLDRRRDDDDLLLLLLLLLDRRRRRRRRRDDDDLLLDRRRDDDRUUURRRRULLLLUUUURRRULLLUUUUURDRURDRUURULURU
Salida 2: W-aaaaaaaaaahh!
LLR
- Mario intenta retroceder un paso y se cae.
UULDR
- Mario intenta cruzar un azulejo dos veces y sale al aire.
RRDDDDD
- Mario sale de un puente en la primera D (ignore los siguientes pasos).
RRRRDDDDLLLL
- Mario camina en un triángulo y cae a través del mosaico inicial.
LLLLLLUUUUUURRRRRR
- Mario camina en un triángulo más grande y cae a través del mosaico inicial.
UUUUUUUUUUUUUUUUUUUU
- Mario camina alrededor del planeta y cae a través del mosaico inicial.
RURDRURDRDLDRDLDLDLULDLLUU
- Mario toma una ruta poco convencional y se desorienta.
Mario, al darse cuenta del peligro en el que se encuentra, no tiene otra opción.
ULLDRDDDRUUU
ULLDRDDDRUUL
ULLDRDDDRUUR
ULLDRDDDRUUD
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRR
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRU
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRL
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRD
Finalmente, copie cualquier caso de prueba de "Mario cruza cada mosaico exactamente una vez" y cambie o agregue un paso al azar. Mario debería caerse. (¡Si agrega un paso al final, Mario cae para agarrar la Power Star!)
* Cubo cantelado sería un término más correcto ya que algunas caras no son cuadradas, pero hay que admitir que el "rombocuboctaedro" fluye mejor.
fuente
R
. He resuelto esto en papel para asegurarme de que mi código sea correcto.Respuestas:
Rubí, golfizado,
244230 bytesParece funcionar bien, probará un poco más.
Ruby, primera versión de trabajo, 260 bytes.
Pruébalo en línea
Función Lambda tomando un argumento de cadena. Devuelve 4 por vivo, 0 por muerto.
Explicación
El tablero se despliega en 6 tiras de tamaño 2x8, representadas por los caracteres
/\
y aO
continuación. Estos se asignan en un mapa 2D 24 * 8, donde x = (número de tira) * 4 + (posición horizontal en la tira) e y = posición vertical en la tira.Estos se almacenan en una matriz de 8 números binarios, por lo que x aumenta hacia la izquierda ey aumenta hacia abajo.
La matriz se inicializa con 8 copias del número
0x33333333
. Esto forma los cuadrados en los que Mario puede pisar. A medida que Mario se mueve alrededor del cuadrado en el que se encuentra, se establece en cero, y el cuadrado al que se mueve se prueba: vive con un 1 y muere si contiene un 0.Si Mario sale de la parte superior o inferior de la tira en la que se encuentra, se mueve a otra tira. Si sale del lado de la franja en la que está, si está en un cuadrado con y = 3 o y = 4, se mueve a otra franja. Si y no es 3 o 4, no se mueve a otra tira y termina en una casilla que tenía 0 desde el principio del juego, por lo que muere.
Debido a que la cámara siempre está por encima de la cabeza de Mario, cada vez que Mario cambia de tira, la referencia de las direcciones debe girarse 90 grados.
Sin golf en el programa de prueba
fuente