Команде программистов перед туром четвертьфинала подарили несколько
головоломок от интернет-магазина
ru-toys.ru.
Самая вредная из них — змейка-куб: стоит её неосторожно
схватить, и она немедленно разворачивается, а чтобы свернуть змейку
обратно в куб, приходится тратить драгоценное время соревнования. Поэтому
они решили быстро написать программку, которая будет решать задачу в общем
виде: определять, можно ли свернуть в куб змейку произвольной конфигурации,
и если можно, то как это сделать.
Змейка состоит из 27 кубиков, надетых,
словно бусы, на прочную нить. Нить закреплена внутри крайних кубиков, а
через все остальные проходит насквозь от центра одной грани к центру
другой. Только через одни кубики нить проходит прямо — через противоположные
грани, а в других поворачивает, проходя через смежные грани кубика. Нить
не дает кубикам раздвигаться, но позволяет свободно вращать одну часть
кубиков относительно другой. Задача — не разрывая нить, свернуть змейку
в куб размером 3 × 3 × 3 маленьких кубика.
Исходные данные
В единственной строке записано 27 букв, описывающих конфигурацию змейки как
последовательность «прямых» (обозначаются буквой
«F») и «поворачивающих» (обозначаются буквой
«T») кубиков. Крайние кубики считаются прямыми.
Результат
Если из данной змейки можно сложить куб, то выведите 26 букв, описывающих
последовательность сворачивания змейки в виде положения каждого следующего
кубика относительно предыдущего. Первым считается первый кубик из входной
строки. Каждый последующий кубик может находиться
впереди («F»), сзади («B»),
справа («R»), слева («L»),
сверху («U»), или снизу («D») от предыдущего.
Если из данной змейки кубик сложить невозможно, выведите слово
«IMPOSSIBLE».
Примеры
исходные данные | результат |
---|
FFTTTFTTFTTTFTFTTTTFTFTFTFF | UURDFFRBBUFLLDDRBRFFLLUURR |
FFTFTFTFTTTTFFFTTTFTTFTTTFF | IMPOSSIBLE |
Автор задачи: Станислав Васильев (подготовка — Сергей Пупырев)
Источник задачи: NEERC 2008, Четвертьфинал Восточного подрегиона