Диэдральная группа является группой симметрии квадрата, то есть движениями, которые преобразуют квадрат в себя посредством поворотов и отражений. Он состоит из 8 элементов: повороты на 0, 90, 180 и 270 градусов и отражения по горизонтальной, вертикальной и двум диагональным осям.
Изображения все с этой прекрасной страницы Ларри Риддла.
Задача состоит в том, чтобы составить эти ходы: с учетом двух ходов выведите ход, который эквивалентен выполнению их один за другим. Например, ход 7, за которым следует ход 4, аналогичен ходу 5.
Обратите внимание, что переключение ордера на ход 4, а затем ход 7 производит вместо этого ход 6.
Результаты приведены в таблице ниже; это таблица Кэли группы . Так, например, входы должны давать выход .
Вызов
Ваша цель состоит в том, чтобы реализовать эту операцию как можно меньшим числом байтов, но в дополнение к коду вы также выбираете метки , представляющие ходы с 1 по 8. Метки должны состоять из 8 различных чисел от 0 до 255. или из 8 -байтовые символы, которые представляют их кодовые точки.
Ваш код получит две метки из 8 выбранных вами, и должен вывести метку, соответствующую их составу, в диэдральной группе .
пример
Допустим, вы выбрали символы C, O, M, P, U, T, E, R для ходов с 1 по 8 соответственно. Затем ваш код должен реализовать эту таблицу.
Учитывая входы E и P, вы должны вывести U. В качестве входных данных всегда будут две буквы C, O, M, P, U, T, E, R, а выходные данные всегда должны быть одной из этих букв.
Текстовая таблица для копирования
1 2 3 4 5 6 7 8
2 3 4 1 8 7 5 6
3 4 1 2 6 5 8 7
4 1 2 3 7 8 6 5
5 7 6 8 1 3 2 4
6 8 5 7 3 1 4 2
7 6 8 5 4 2 1 3
8 5 7 6 2 4 3 1
Your choice of labels doesn't count against your code length.
возражаете? В настоящее время я могу жестко закодировать матрицу в свой код и утверждать, что она не засчитывается в мой счет.