Задачи
Программист и шестиугольник
Программист и шестиугольник
Цель этой задачи - решить головоломку, состоящую из \textbf{7} деревянных кусков шестиугольной формы (далее будем их просто называть "шестиугольниками"), которые необходимо положить на \textbf{7} колышек, закрепленных в деревянной основе. Колышки пронумерованы, как показано на \textit{\textbf{Рисунке 1}}. Колышки пронумерованы (от \textbf{0} до \textbf{6}) для удобства дальнейшего изложения. Шестиугольники пронумерованы заглавными буквами от '\textbf{A}' до '\textbf{G}' (как на \textit{\textbf{Рисунке 2}}). У каждой стороны шестиугольника приписано целое число (от \textbf{0} до \textbf{9} включительно).
Можно заметить, что когда \textbf{7} шестиугольников положить на \textbf{7} колышек, то \textbf{3} ребра каждого внешнего шестиугольника и все ребра шестиугольника на колышке \textbf{0} являются соседними со сторонами некоторых других шестиугольников. Для решения головоломки необходимо найти расположение и ориентацию всех \textbf{7 }шестиугольников таким образом, чтобы числа, записанные на прилегающих друг к другу сторонах шестиугольников, были одинаковыми. (см. \textit{\textbf{Рисунок 3}}).
\includegraphics{https://static.e-olymp.com/content/9f/9f57d564bf12b883425bacc54b773dadfaa7db85.jpg}
\textit{\textbf{Рисунок 3}} - Вид сверху на решенную головоломку
Программа должна прочитать описание семи шестиугольников, найти решение используя эти \textbf{7} шестиугольников (если такое существует), и вывести описание решения головоломки. Если решение не единственно, то можно вывести любое из них (когда найдено одно решение, то можно вращать шестиугольник на колышке \textbf{0} и соответственно другие шестиугольники, попробовав получить другие решения). Если решения не существует, то программа должна выдать соответствующее сообщение. После вывода решения на одну головоломку, программа должна считать данные следующей, и так следует продолжать до конца входных данных.
\InputFile
Входные данные состоят из нескольких тестов, каждый из которых задает описание набора шестиугольников. Каждая из первых \textbf{7} строк содержит по \textbf{6 }цифр (без пробелов). Это цифры, которые записаны на \textbf{6} сторонах каждого шестиугольника. В первой строке приведены числа, записанные на шестиугольнике '\textbf{A}'. Числа второй строки соответствуют шестиугольнику '\textbf{B}', и так далее до \textbf{7} строки, числа которой принадлежат шестиугольнику '\textbf{G}'. Первая цифра в каждой строке - это цифра на стороне, находящейся в положении "\textbf{12 Часов}" или "\textbf{Верх}". Следующие \textbf{5} цифр - числа на сторонах, расположенных по часовой стрелке от стороны "\textbf{TOP}". Например, шестиугольник на рисунке \textbf{2} можно представить строкой \textbf{123456}. Как можно заметить на рисунке \textbf{3}, стороны шестиугольника НЕ обязательно содержат разные числа.
После \textbf{7} строк, описывающих множество шестиугольников, имеется строка из одной звездочки (\textbf{*}) в колонке \textbf{1}, которая используется для разделения между множествами шестиугольников. После нахождения ответа для текущего множества шестиугольников, и до конца файла, Ваша программа должна прочитать следующие \textbf{7} строк представляющие собой описание следующего множества шестиугольников - следует решать новую головоломку. Звездочка следует после каждого множества, включая последнее.
\OutputFile
Вывести решение для каждого входного множества шестиугольников. В решении следует указать, какой шестиугольник должен быть надет на колышек \textbf{0}, на колышек \textbf{1}, на колышек \textbf{2}, ... и на колышек \textbf{6}. Для каждого шестиугольника следует также описать его ориентацию. Таким образом, следует вывести \textbf{3} колонки информации. Колонка \textbf{1} содержит список колышек от \textbf{0} до \textbf{6}. Колонка \textbf{2} содержит список букв, описывающих какие шестиугольники кладутся на колышек \textbf{0}, на колышек \textbf{1}, ... и на колышек \textbf{6}, именно в таком порядке. В колонке \textbf{3} представлен список чисел на сторонах шестиугольника, номер которого записан в колонке \textbf{2}. Цифры должны начинаться со стороны в позиции "\textbf{ВЕРХ}", когда головоломка решена. Следующие \textbf{5} цифр соответствуют сторонам в порядке обхода по часовой стрелке. Каждая колонка должна иметь название. Название первой колонки "\textbf{PEG}". Название второй колонки "\textbf{HEX}", а третьей "\textbf{POSITION}".
Если для некоторого множества шестиугольников решения не существует, то следует вывести сообщение: "\textbf{No solutions possible}". После описания каждого решения вывести строку из \textbf{36} звездочек "\textbf{*}" (или после сообщения "\textbf{No solutions possible}") для отделения решений головоломок друг от друга.
Входные данные #1
665403 444444 666666 123456 123456 040404 289766 * 123456 111111 222222 333333 444444 555555 666666 *
Выходные данные #1
PEG HEX POSITION --- --- -------- 0 A 665403 1 G 976628 2 C 666666 3 E 612345 4 B 444444 5 F 404040 6 D 123456 ************************************ No solutions possible ************************************
Объяснение: Решение первого теста приведено на рисунке 3.