Super Mario Galaxy apresenta dois planetas em forma de rhombicuboctahedron * revestidos de plataformas que encolhem quando Mario atravessa. Se Mario cair em um buraco triangular ou em um espaço deixado por um ladrilho que ele tocou anteriormente, ele será consumido pelo buraco negro no núcleo. (Assista: Galaxy apressado , Galaxy Slide do mar )
Imagem: MarioWiki.com
(Você pode pensar no planeta como um cubo 2x2x2 cujas faces foram separadas e conectadas umas às outras por "pontes" 2x3.)
Infelizmente, como meu controlador está muito quebrado, Mario não pode pular e está limitado às quatro direções principais. Além disso, Mario se move muito devagar e não pode recuar nem um passo sem primeiro ter a plataforma atrás dele desaparecendo.
Vamos supor que a câmera esteja sempre acima da cabeça de Mario e ele começa no canto inferior direito de um rosto 2x2:
■ ■
■ ■
■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ M ■ ■ ■
■ ■
■ ■
■ ■
Seu programa seguirá uma lista ou uma sequência de instruções U
D
L
R
(para cima, baixo, esquerda, direita), representando a caminhada de Mario ao redor do planeta até uma série de etapas. O programa pode gerar uma de duas saídas distintas: uma representando que Mario ainda está vivo e andando, e a outra representando que, em algum momento de sua caminhada, Mario caiu no Satélite Encolhendo.
RR: ■ ■ RRD: ■ ■ RRL: ■ ■
■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ □ □ M ■ ■ ■ ■ ■ □ □ □ ■ ■ ■ ■ ■ □ M □ ■
■ ■ \ ■ ■ M ■ ■ \
■ ■ Let's-a go! ■ ■ \ ■ ■ W-aaaaaaaaaahh!
■ ■ ■ ■ W-aaaaaaaaaahh! ■ ■
Obviamente, ao contrário dos diagramas acima, você terá que levar em conta o 3D. Aqui está um diagrama que pode ajudá-lo a visualizar melhor o cenário:
Top 2x2 face
<- clockwise anticlockwise ->
- ■ - ■ - ■ - ■ -
/ \ / \ / \ / \
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ Left and right
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ M ■ ■ ■ ■ ■ ■ ■ ■ ■ edges wrap around.
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
\ / \ / \ / \ /
- ■ - ■ - ■ - ■ -
<- anticlockwise clockwise ->
Bottom 2x2 face
Portanto, de acordo com este diagrama, UUUUURRRR
pode ser assim:
- ■ - ■ - □ - ■ -
/ \ / \ / \ / \
■ ■ ■ ■ □ □ ■ ■
■ ■ ■ ■ □ □ ■ ■
■ ■ ■ ■ □ □ ■ ■
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ □ ■ ■ ■ M ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ □ ■ ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
\ / \ / \ / \ /
- ■ - ■ - ■ - ■ -
E UUUUUUUUULURRRRRR
pode ficar assim:
- ■ - ■ - □ - □ -
/ \ / \ / \ / \
■ ■ ■ ■ □ ■ ■ □
■ ■ ■ ■ □ ■ ■ □
-> □ ■ ■ ■ □ ■ ■ □ ->
<- □ ■ ■ ■ ■ ■ ■ ■ ■ ■ □ ■ ■ ■ M □ □ □ □ □ <-
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ □ ■ ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
\ / \ / \ / \ /
- ■ - ■ - ■ - ■ -
Que o programa mais curto em bytes seja w-aaaaaaaaaahh!
Casos de teste
Saída 1: Ainda Vivo
DDDDDLUUUUU
- Mario atravessa uma ponte e volta.
RRRRDDDDLLL
- Mario anda em um triângulo.
LLLLLLUUUUUURRRRR
- Mario entra em um triângulo maior.
ULLDRDDDRU
- Mario se coloca em perigo.
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRR
- Mario segue um caminho não convencional ... e se arrisca.
Mario atravessa cada peça exatamente uma vez.
DDDDLUUUULLLLDDDLUUULLLLDDDDLUUUULLLLDDDLUUULLLURRRUUURDDDRRRRUUURDDDRRRRUUURDDDRRRRUUUUURDDDDD
DLDRDLDLLLDRRRDDDDLLLLLLLLLDRRRRRRRRRDDDDLLLDRRRDDDRUUURRRRULLLLUUUURRRULLLUUUUURDRURDRUURULURU
Saída 2: W-aaaaaaaaaahh!
LLR
- Mario tenta recuar um passo e cai.
UULDR
- Mario tenta cruzar uma peça duas vezes e pisa no ar.
RRDDDDD
- Mario sai de uma ponte no primeiro D (ignora os passos seguintes).
RRRRDDDDLLLL
- Mario caminha em um triângulo e cai através da peça inicial.
LLLLLLUUUUUURRRRRR
- Mario caminha em um triângulo maior e cai através da peça inicial.
UUUUUUUUUUUUUUUUUUUU
- Mario anda por todo o planeta e cai no ladrilho inicial.
RURDRURDRDLDRDLDLDLULDLLUU
- Mario segue uma rota não convencional e fica desorientado.
Mario, percebendo o perigo em que está, não tem escolha.
ULLDRDDDRUUU
ULLDRDDDRUUL
ULLDRDDDRUUR
ULLDRDDDRUUD
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRR
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRU
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRL
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRD
Por fim, copie qualquer caso de teste de "Mario cruza todos os blocos exatamente uma vez" e altere ou adicione uma etapa aleatoriamente. Mario deve cair. (Se você adicionar um passo até o fim, Mario cai para pegar a Power Star!)
* Cubo cantelado seria um termo mais correto, já que algumas faces não são quadradas, mas é preciso admitir - o "rhombicuboctahedron" flui melhor.
R
. Eu trabalhei isso no papel para garantir que meu código esteja correto.