Кубик Рубика
Вы — секретный агент Внешней Разведывательной Службы Вечно Задолженного Государства (EIEIO) страны Номонео. Ваше задание — использовать одноразовый блокнот для зашифрованных сообщений, замаскированный под Кубик Рубика®. (Для тех, кто не знаком с этой головоломкой: Кубик Рубика® — это куб, каждая грань которого разделена на три ряда и три столбца (всего девять "квадратов"). Любую из шести граней можно повернуть по часовой стрелке или против часовой стрелки, что также перемещает три ближайших квадрата на каждой прилегающей грани. Когда куб собран (или извлечен из заводской упаковки), каждая грань состоит из квадратов одного цвета. Невозможно изменить взаимное расположение цветов центральных квадратов на каждой грани.) Куб был предварительно перемешан, и вам нужно применить определенный набор движений в зависимости от сообщения, которое вы хотите отправить.
Эта диаграмма показывает взаимосвязь между сторонами куба, а также ориентацию граней для целей ввода и вывода. Она должна рассматриваться как развернутый куб с текстом снаружи. Грани обозначены цветом центрального квадрата: Белый, Оранжевый, Красный, Синий, Зеленый и Желтый. Уголок с точкой — это верхний левый угол для целей ввода и вывода.
Входные данные
Ваша программа должна читать входные данные из файла, который состоит из нескольких случаев. Первая строка ввода указывает количество этих случаев (в виде десятичного целого числа без каких-либо знаков препинания), которое будет больше или равно 1 и меньше или равно 10,000. Каждый случай состоит из трех строк, описывающих начальное состояние куба-головоломки, и одной строки, описывающей вращения, которые вы должны применить, чтобы достичь соответствующего конечного состояния куба.
Каждая из трех строк, описывающих начальное состояние куба, состоит из 18 букв с одним пробелом между каждой парой букв. Между последней буквой и концом строки пробела нет. Каждая из букв — 'W', 'O', 'R', 'B', 'G' или 'Y', указывающая соответствующий цвет. Грани перечислены слева направо в порядке (по цвету центрального квадрата) Белый, Оранжевый, Красный, Синий, Зеленый, Желтый. Таким образом, первые три столбца букв дают состояние "Белой" грани и так далее.
Четвертая строка случая дает манипуляции, которые вы должны применить к кубу. Каждая манипуляция состоит из одной буквы, как указано выше ('W', 'O', 'R', 'B', 'G' или 'Y'), указывающей, какую грань (выбранную по цвету центра) вы должны повернуть. Каждое вращение, таким образом, представляет собой 90º поворот по часовой стрелке грани относительно остальной части куба, глядя на грань, которую нужно повернуть. Будет указано как минимум одно и не более 1,000 манипуляций.
Выходные данные
Выведите в стандартный вывод состояние куба после указанных манипуляций. Используйте тот же формат, что и для ввода: три строки, каждая из которых содержит 18 цветных букв, разделенных одним пробелом. Не ставьте пробел после последней буквы в строке. Выведите грани в том же порядке, слева направо, что и для ввода: Белый, Оранжевый, Красный, Синий, Зеленый, Желтый. После каждого выходного случая выведите строку, содержащую 35 символов '='.