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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2018, 11:24   #1
Armageddets
Форумчанин
 
Регистрация: 30.06.2012
Сообщений: 145
По умолчанию Головоломка Птички. Не могу придумать авторешение

Всем доброго времени суток, уважаемые эксперты. По заданию нужно сделать головоломку, соответствующую следующим правилам (на картинке). Головоломку я сделал.

А вот в авто решении нельзя просто подставить загаданный пример программой, потому что нужно, чтобы программа могла загрузить поле из файла и не зная правильного решения - автоматически его решить. Пробовал разные варианты - пока ничего не получается толкового. Подскажите как это реализовать хотя бы примерно (можно на словах даже) или в какую сторону копать в создании алгоритма. Заранее спасибо за советы всем!

Если нужно - я прикреплю весь проект.

Armageddets вне форума Ответить с цитированием
Старый 11.05.2018, 12:30   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Засунь в двумерный массив сначала. Поскольку шестиугольная мозаика, то массив не совсем простой. И перебор вариантов c отбраковкой тупиковых пока все не заполнишь ))
Изображения
Тип файла: jpg Безымянный.jpg (23.8 Кб, 64 просмотров)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.05.2018, 13:24   #3
Armageddets
Форумчанин
 
Регистрация: 30.06.2012
Сообщений: 145
По умолчанию

Я через трехмерный массив делал. Третье число отвечало за уровень - верхний уровень - это номера фигуры в той клетке куда поставили ее ( в зависимости от координат и поворота), а на нижнем уровне отмечаю уже занятые клетки (по 3 клетки на каждую фигуру). Там еще буду доделывать повороты фигур - сейчас повор происходит только если кликаешь по клетке, в которой поставил фигуру (я только ее отмечаю в массиве на верхнем уровне), анужно будет чтобы по любой клетке можно было поворачивать. Но с этим я, думаю, разберусь - там не так сложно.

При прорисовке я просто для клеток сдвиги вправо прописал и вверх. И проблема была решена.

Реализация шестиугольных клеток и их отображение не очень большая проблема. Проблема именно в алгоритме. То виснет все, то решения не находит и решает не до конца. Я так понимаю нужно через бек трекинг делать реализацию и под него делать новый массив, в котором отмечать каждую поставленную фигуру. А когда ставится фигура - надо в радиусе 1 клетки вокруг прорять кратность трем клеток. И как-то (возможно через волновой алгоритм поиска) проверять замкнутные области. Вот пока и не получается этот алгоритм придумать должным образом.

Сам проект:
http://dropmefiles.com/u2QXo

Последний раз редактировалось Armageddets; 11.05.2018 в 13:28.
Armageddets вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу придумать условие запроса Dvoishnik SQL, базы данных 3 22.04.2016 15:31
Матрицы в Builder.Не могу ничего придумать. spectrum988 Помощь студентам 21 25.11.2013 15:27
Не могу придумать доработку. Rik55rus Помощь студентам 1 06.10.2012 21:13
не могу придумать форрмулу!!! ta4ilka Microsoft Office Excel 3 11.04.2010 18:02