Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2017, 21:10   #1
Dancon
Новичок
Джуниор
 
Регистрация: 16.12.2016
Сообщений: 2
По умолчанию Пирамида мефферта

Добрый день. Имеется такая задача:
У нас есть развертка японского тетраэдра, состоящая из 4 граней,каждая из которых состоит из 9 равносторонних треугольников. Каждый из маленьких треугольников окрашен в один из четырех различных цветов, которые мы обозначаем латинскими буквами a, b, c и d. Есть ровно 9 треугольников каждого из четырех цветов.



Мы можем преобразовать тетраэдр, используя операцию «поворот лица». Чтобы выполнить эту операцию, мы выбираем лицо пирамиды и ориентируем пирамиду так, чтобы выбранное лицо было к нам. Затем мы определяем направление вращения (по часовой стрелке или против часовой стрелки). Наконец, мы поворачиваем часть тетраэдра, ближайшего к выбранной грани, оставляя оставшуюся часть тетраэдра неподвижной.

Помимо поворота граней, мы также можем применить операцию «волшебная краска». Эта операция определяется перестановкой (p1, ..., p36) целых чисел с 1 по 36. Эффект операции заключается в том, что треугольник, находящийся в настоящее время в позиции i , перекрашен в Цвет треугольника, находящегося в настоящее время в позиции pi. Все 36 треугольников перерисовываются одновременно.

Пазл решается, если после применения ряда операций «поворот лица» и / или «волшебной краски» все треугольники на каждой грани тетраэдра имеют один и тот же цвет.


Ввод

Первая строка файла содержит 36 букв 'a' ... 'd'. Буква на позиции i обозначает начальный цвет треугольного номера i. Известно, что каждая из четырех букв встречается ровно 9 раз в первой строке файла.

Вторая строка файла содержит 36 различных целых чисел 1 ... 36, которые описывают операцию «волшебной перекраски». I-е целое в этой строке является членом pi перестановки, которая определяет операцию.

Вывод

Первая и единственная строка файла должна содержать строку символов «X», «U», «V», «W», «x», «u», «v», «w» и «*», , I-й символ должен описывать i-е движение в решении головоломки. Каждая операция «вращать грань» задается как метка соответствующей грани, а строчная буква обозначает поворот по часовой стрелке и заглавной буквой на поворот против часовой стрелки. Операция «перерисовки» задается как символ «*».

Пример(фигура 3,4,5)

Ввод

ddddcccccabbbbbdcaabbbddacccaabddaa a
36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

Вывод

*U

Если есть несколько решений с минимальным количеством ходов, выведите любой из них. Если головоломку можно решить без каких-либо ходов, выведите пустую строку в файл. Иллюстрация примера: Рисунок 3 показывает начальную окраску тетраэдра, а на рисунках 4 и 5 показаны результаты каждой операции. Цвета треугольников задаются следующими шаблонами.

Слезно прошу подскажите с чего начать, стандартные алгоритмы сборки пирамидки не подходят,так как мы не можем поворачивать по оси угловые треугольники;а больше ничего в голову не приходит
Изображения
Тип файла: gif 3564_1.gif (11.6 Кб, 66 просмотров)
Тип файла: gif 3564_3.gif (11.5 Кб, 64 просмотров)
Тип файла: png 3564_6.png (830 байт, 63 просмотров)
Dancon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пирамида пасьянсов drako08 Python 1 23.03.2017 00:08
OpenGL. Пирамида _PROGRAMM_ Помощь студентам 4 08.11.2011 11:38
Составить программу «Пирамида». 4eri Помощь студентам 3 29.04.2010 21:53