Ми можемо представити кубик Рубіка як мережу, як це відбувається (коли це вирішено):
WWW
WWW
WWW
GGGRRRBBBOOO
GGGRRRBBBOOO
GGGRRRBBBOOO
YYY
YYY
YYY
Кожна літера представляє відповідний колір ( W
білий, G
зелений тощо)
Було показано, що існує рівно (~ квінтільйона) різних перестановок, якими може бути куб Рубіка.
Ваше завдання - взяти ціле число між і і вивести відповідну перестановку, як показано вище. Ви можете вибрати спосіб упорядкування перестановок, але алгоритм, який ви використовуєте, повинен бути показаний для створення унікальної та правильної перестановки для кожного можливого введення.
Недійсні правила перестановки
Зібрано з цієї сторінки
Для початку центр кожної грані 3x3 повинен залишатися однаковим, оскільки центральну площу на кубі Рубіка не можна обертати. Весь куб можна обертати, змінюючи місце, де виглядає обличчя, але це не впливає на сітку куба.
Якщо ми скажемо, що кожна перестановка має парність, виходячи з паритету кількості свопів, щоб досягти цієї перестановки, ми можемо сказати
Кожна кутова деталь має три можливі орієнтації. Він може бути орієнтований правильно (0), за годинниковою стрілкою (1) або проти годинникової стрілки (2). Сума кутових орієнтацій завжди залишається діленою на 3
Кожне правове обертання куба Рубіка завжди перевертає рівну кількість країв, тому не може бути лише одна деталь, орієнтована неправильно.
Враховуючи перестановку всіх кутів і країв, загальний паритет повинен бути рівним, що означає, що кожен законний хід завжди виконує еквівалент парної кількості замінів (ігнорування орієнтації)
Наприклад, наступні три нетто є недійсними результатами:
WWW
WWW
WWW
GGGWWWBBBOOO
GGGRRRBBBOOO
GGGRRRBBBOOO
YYY
YYY
YYY
(Too many whites/not enough reds)
WRW
WRW
WRW
GGGRWRBBBOOO
GGGWRRBBBOOO
YYGRWROOOBBB
YYY
GGY
YYY
(There are two red/green center squares and no white/yellow center squares.
In all valid permutations, the center squares are all different colours)
WWW
WWW
WWW
GGGRRRBBBOOO
GGGRRRBBBOOO
GGGRRRBBOYOO
YYY
YYY
YYB
(The yellow/orange/blue corner is rotated into an impossible permutation)
Правила
- Ви повинні довести, як би ви хочете, що алгоритм дійсний. Вам не доведеться перераховувати кожну перестановку, доки ви докажете чинність свого алгоритму.
- Поки ваша програма теоретично буде працювати на всі цілі числа від до , вам не доведеться турбуватися про практичність фактичного отримання вхідних даних, більших ніж ваша мова.
- Це означає, що якщо ваша мова / тип / що завгодно може обробляти лише числа до , сама програма може вийти з ладу, якщо вхід більше , але алгоритм, який ви використовуєте не слід.
- Наприклад, якщо у вашій програмі Javascript не введено виключно через те, що це число виходить за межі, це добре. Однак, якщо ваш алгоритм був перенесений на мову з цілими числами довільного розміру і не вдався до цього вводу, програма не була б дійсною.
- Ви повинні включити у відповідь якийсь доказ достовірності. Цей доказ може підтвердити справедливість у будь-якому прийнятому способі доказування, за винятком перерахування всіх можливостей.
- Ви можете вибрати альтернативний метод введення, якщо бажаєте, якщо:
- Вхід обмежений
- Кожному входу відповідає унікальний вихід
- Ви чітко пояснюєте формат введення та як він відповідає кожному виводу
- Ви можете замінити символи, які використовуються для використання 6 різних символів ASCII, між 33 (
!
) та 126 (~
)WGRBOY
- Ви можете виводити будь-яким способом, доки він формує чітке зображення куба, де можуть бути показані всі 6 граней, включаючи будь-яку дійсну кубичну сітку, одну вишиковане рядок або 3D-рендерінг. Якщо ви не впевнені в конкретному форматі, не соромтесь запитати в коментарях.
Це код-гольф, тому найкоротший код у байтах на кожній мові виграє.
Приклад дійсних результатів
YYY
YYY
YYY
GGGRRRBBBOOO
GGGRRRBBBOOO
GGGRRRBBBOOO
WWW
WWW
WWW
(The `W` and `Y` faces have been swapped)
ZZZ
+++
+}}
+[[}77ZZ7bbb
bb[}[[7}}+Z7
bb[}++[}}+Z7
7bb
[7Z
[7Z
(To start with, the colours have been mapped W -> +, G -> b, R -> [, B -> }, O -> Z and Y -> 7.
Then, the moves L, R, U and F' have been applied, in that order.
Notice that each centre square is different, and corresponds to the same colour as in the mapping)