eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Программист и шестиугольник

Программист и шестиугольник

Цель этой задачи - решить головоломку, состоящую из \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 секунда
Лимит использования памяти 64 MiB
Входные данные #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.