Супер Маріо Галактика оснащений двомапланетами у формі ромбікобоктаеда, обробленими плитками, що стискаються, коли Маріо перебігає. Якщо Маріо потрапить у трикутну дірку або зазор, залишений плиткою, яку він раніше торкався, його поглине чорна діра в основі. (Годинник: метушливий Galaxy , море Slide Galaxy )
Зображення: MarioWiki.com
(Ви можете уявити про планету як куб 2х2х2, обличчя якого були відокремлені та з'єднані один з одним 2x3 "мостами".)
На жаль, оскільки мій контролер дуже зламаний, Маріо не може стрибати і обмежений чотирма кардинальними напрямками. Крім того, Маріо рухається дуже повільно і не може просунутись ні на один крок, не спершу зникнувши за ним платформу.
Припустимо, що камера завжди знаходиться над головою Маріо, і він починається в нижній правій частині обличчя 2х2:
■ ■
■ ■
■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ M ■ ■ ■
■ ■
■ ■
■ ■
Ваша програма буде приймати список або рядок напрямків U
D
L
R
(вгору, вниз, вліво, вправо), представляючи прогулянку Маріо по планеті як низку кроків. Програма може вивести один з двох різних виходів: один, що представляє, що Маріо все ще живий і ходить, а другий, що представляє, що десь уздовж його прогулянки, Маріо потрапив у супутник, що скорочується.
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
- Маріо прямує нетрадиційним шляхом ... і піддає себе небезпеці.
Маріо перетинає кожну плитку рівно один раз.
DDDDLUUUULLLLDDDLUUULLLLDDDDLUUUULLLLDDDLUUULLLURRRUUURDDDRRRRUUURDDDRRRRUUURDDDRRRRUUUUURDDDDD
DLDRDLDLLLDRRRDDDDLLLLLLLLLDRRRRRRRRRDDDDLLLDRRRDDDRUUURRRRULLLLUUUURRRULLLUUUUURDRURDRUURULURU
Вихід 2: W-aaaaaaaaahh!
LLR
- Маріо намагається просунути крок і падає.
UULDR
- Маріо намагається двічі перетнути плитку і ступить у повітря.
RRDDDDD
- Маріо спускається з мосту на першій D (ігноруйте будь-які наступні кроки).
RRRRDDDDLLLL
- Маріо йде в трикутник і провалюється через стартову плитку.
LLLLLLUUUUUURRRRRR
- Маріо ходить у більший трикутник і провалюється через стартову плитку.
UUUUUUUUUUUUUUUUUUUU
- Маріо прогулює всю планету і провалюється через стартову плитку.
RURDRURDRDLDRDLDLDLULDLLUU
- Маріо проходить нетрадиційний маршрут і стає дезорієнтованим.
Маріо, усвідомлюючи небезпеку, в якій він знаходиться, залишається без вибору.
ULLDRDDDRUUU
ULLDRDDDRUUL
ULLDRDDDRUUR
ULLDRDDDRUUD
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRR
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRU
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRL
RURDRURDRDLDRDLDLDLULDLLLLLLLLLLLLLLLLURRRRRRRRRRRRRRD
Нарешті, скопіюйте будь-який тестовий випадок із "Маріо перетинає кожну плитку рівно один раз" та змініть або додайте один крок навмання. Маріо повинен впасти. (Якщо додати крок до кінця, Маріо падає, щоб схопити Power Star!)
* Нарізаний куб був би більш правильним терміном, оскільки деякі грані не є квадратними, але ви повинні визнати - "ромбікубоктаедр" протікає приємніше.
R
. Я опрацював це на папері, щоб переконатися, що мій код правильний.