Присвойте числа от 0 до 7 8 вершинам куба любым удобным для вас способом. Точно одно число должно быть назначено каждой вершине.
Например, ваши вершины могут быть назначены так:
3-----1
/| /|
4-----2 |
| | | |
| 5---|-0
|/ |/
6-----7
Напишите программу, которая принимает целое число от 0 до 5. Каждое из этих 6 чисел ассоциируется ровно с одним лицом вашего куба любым удобным для вас способом. Когда вводится одно из этих чисел, 4 номера вершин связанной грани должны быть напечатаны в стандартный вывод в виде квадрата 2 × 2. Лицо должно быть видно прямо снаружи куба. Все 4 вращения лица действительны.
Например, если 0 связан с передней гранью приведенного выше примера куба, то это будет действительный вывод для ввода 0
:
42
67
Лицо можно просматривать при любом повороте на 90 °, поэтому они также действительны:
27
46
76
24
64
72
Эти выходные данные (и их повороты) недопустимы , так как они рассматриваются с неправильной стороны лица:
24
76
Та же идея относится ко всем другим лицам. Например, если 1 связано с задней стороной, то ввод 1
может привести к выводу 13[newline]05
(и 31[newline]50
будет недействительным).
Таким образом, настоящая проблема заключается в том, чтобы выбрать свои номера вершин и повороты так, чтобы преобразовать ввод в его 4 числа вершин легко и быстро.
Самый короткий код в байтах побеждает. Tiebreaker - более ранний пост. ( Удобный счетчик байтов. )
Примечания
- Вы можете написать функцию вместо программы. Он должен принимать целое число от 0 до 5 и печатать или возвращать 2 × 2-разрядную строку сетки.
- Возьмите ввод из стандартного ввода, командной строки или функции arg. Вы можете предположить, что ввод действителен.
- Выходные данные могут дополнительно иметь завершающий символ новой строки.
- Обязательно сообщите нам выбранные вами номера вершин и граней.