![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| Сашок |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 27.6.2008 Репутация: нет Всего: нет |
Надо писать курсовик. Вот решил задуматься о нем. Наткнулся на тему: определение валидности раскрасски кубика-Рубика, хочу попробовать. Подкиньте, пожалуйста, идеи как лучше реализовывать кубик, какой метод решения задачи наиболее приемлем. Видимо тупой перебор не пойдет, ибо слишком много состояний. Заранее благодарен.
|
|||
|
||||
| Dobermann |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 992 Регистрация: 7.1.2008 Репутация: нет Всего: 0 |
Даже понятия не имею Кубик-рубик нужно ведь на трех осях отобразить, чтоб хотя бы с расцветкой помучаться На паскале такое возможно?!?!?! (Я не имею ввиду массив типа [1..5,1..5,1..5] of color и заполнение его SetLength'ом |
|||
|
||||
| deswars |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 23.6.2008 Репутация: нет Всего: нет |
Можна попробовать сохранять цвета в масиве [1..3,1..3,1..6] of ...
|
|||
|
||||
| Сашок |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 27.6.2008 Репутация: нет Всего: нет |
Я представил кубик в виде массива 6-ти массивов 3х3. Они как бы представляют развертку куба. Описал ЭП над ним. Главная проблема заключается в том что очень сомнителен сбособ тупого перебора, ибо перебрать 18^23 вариантов очень затратно. Конечно некоторые случаи можно опустить, например 4 последоватьельных одинаковых действия, или действие, а за ним обратное к нему, но это не слишком сильно уменьшит число вариантов...
|
|||
|
||||
| Dobermann |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 992 Регистрация: 7.1.2008 Репутация: нет Всего: 0 |
Я думал попутаю, когда выводил статистику о решении задачи о ханнойских башнях
Было бы проще, зная что противоположные стороны плоскостей симметричны ( ну всмысле еслиб цвета были противоположно-одинаковыми ), а так эта затея врятли без GUI и API получится... |
|||
|
||||
| Сашок |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 27.6.2008 Репутация: нет Всего: нет |
На сколько я понял имеется ввиду график юзер интерфейс и апликэйшен программинг интерфасе. Но прога всего лишь должна по заданной раскрасске выдать true/false. Допустим что ввод раскрасски произведен в текстовом режиме, те цвет:=цифра 1..6.
Не главное сделать менюшку и раскрасску красивую, а главное проверить валидность. |
|||
|
||||
| Dobermann |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 992 Регистрация: 7.1.2008 Репутация: нет Всего: 0 |
Да. Ну к примеру ты расскрасишь его, а что дальше?!?!?! Какая валидность??? Валидность чего??? _______________ | 1 1 | | 1 1 | |___1_____1_ ___| | 1 1 | | 1 1 | |___1_____1__ __| | 1 1 | | 1 1 | |___1_____1_ ___| И в общем смысле ты собираешься вручную задавать по 9 цветов 6 раз А может его еще и собрать)))))))))) |
|||
|
||||
| Сашок |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 27.6.2008 Репутация: нет Всего: нет |
Под валидностью я подразумеваю возможность собрать кубик в его первоначальное(собранное) состояние из заданного.
|
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Dobermann, не неси, пожалуйста, ерунду. GUI и API здесь ну совершенно не обязательны. Ты хоть знаешь, что за этими терминами кроется, особенно за вторым? Если знаешь, то мне странно, что ты их употребил в данной теме.
Сашок, перечитал тему несколько раз, но все равно не до конца понял, что должна делать программа. Что значит "возможность собрать кубик в первоначальное состояние". Если этот кубик построен по правилам того самого кубика (тупо звучит, я знаю), то кубик всегда можно собрать. Значит, насколько я понимаю, программа должна определять, допустима ли заданная расцветка кубика. Так? Если так, то нужно порыть алгоритмы сборки кубика-рубика. Добавлено через 2 минуты и 44 секунды Вот нарыл общую теорию по кубику: http://ravlyk.narod.ru/rubic/state/index.html Добавлено через 5 минут и 2 секунды Вот еще линк. http://www.cubemir.narod.ru/kaksobrat/moj_...d/vvedenie.html По обоим указанным линкам есть теория + алгоритм сборки. Твоя задача по сути сводится к реализации этого алгоритма и последующей проверке на заданной расцветке. |
|||
|
||||
| Сашок |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 27.6.2008 Репутация: нет Всего: нет |
Да. Так и есть. Я уже много всяких алгоритмов накопал для сборки. Т.е. если заданный кубик не собрать то данные алгоритмы в некоторый момент просто загнутся. И на этом основании предлагаете устанавливать true/false входного кубика?
Добавлено через 7 минут и 23 секунды Нашел интересную статью из старого журнала, разбираюсь. Вроде то что надо. Вот ссыль, может кому тоже пригодится. http://www.kubik-rubika.com/sobrat/sobrat-...bika-1982_8.pdf |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Сашок, ну можно и на этом основании. Поставить какой-нить флаг, при "загибании" алгоритма флаг сбрасывать/устанавливать и вылетать с соответствующим результатом. Это как вариант.
|
|||
|
||||
| Сашок |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 27.6.2008 Репутация: нет Всего: нет |
Буду пробовать.
|
|||
|
||||
| Dobermann |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 992 Регистрация: 7.1.2008 Репутация: нет Всего: 0 |
Да?! Чушь?! А "менюшка", которую он собрался делать, будет трижды заrepeatена?!?!?! Добавлено через 10 минут и 57 секунд Я не имел ввиду "высрать" GUI и API из 16-разрядного павкалевского компилятора... Просто как без них понять, что реализуется кубик-рубик (еще и на трёх плоскостях) |
|||
|
||||
| mmvds |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 22.12.2007 Репутация: нет Всего: 6 |
Сдается мне, что кубик собирать не нужно,
Идея по-поводу валидности - средние клетки сторон кубика как бы его не вертели остаются на месте, т.е. напротив средней клетки одной стороны определенного цвета обязательно должен быть другой цвет. Т.е. как минимум одна проверка есть - проверить все серединные клетки 6 сторон, если хотябы 2 из них одного цвета, то кубик собрать невозможно, правда обратное скорее всего не всегда верно. И еще, где-то читал про задачу с пятнашками - т.е. дан набор на поле, определить можно ли его собрать по порядку, задача решалась очень просто - проверкой четности числа ошибок в построении, если оно четно, то задача решаема, возможно и с кубиком также... P.s. тему лучше перенести в раздел алгоритмы, там ее раскусят за вечер Добавлено через 11 минут и 4 секунды Еще в голову пришло два вида проверок: 1) На угловых кубиках все 3 стороны должны быть разного цвета 2) На боковых кубиках обе стороны должны быть разного цвета Думаю в сумме три проверки уже достаточно неплохо, возможно этого будет достаточно. |
|||
|
||||
| Сашок |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 27.6.2008 Репутация: нет Всего: нет |
В той статье которую я выше постил есть необходимое и достаточное условие валидности. Вот оно то думаю и поможет. Просто проверки по каким то критериям позволяют лишь увеличить вероятность того, что раскрасска верна. Но полностью в этом убедится без мат. док-ва не получится
|
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |