Доброго времени суток, Планетяне! Что-то уныло в последнее время на нашем форуме стало: вроде и тем полно, а всё один скучный шлак какой-то с нарушениями правил…
Для тех у кого есть время и желание предлагаю придумать/реализовать алгоритм для сортировки объектов по контейнерам. Навеяно логическими играми типа "BallSortPuzzle"
Правила (основные)
Дано: • F (full) полностью заполненных контейнеров (в файле 3, а на скрине игры 9) • E (empty) пустых контейнеров для "перефасовки" элементов (в файле и скрине игры — по одному) • свойства контейнеров полностью идеинтичны и состоят только в том, что они могут быть пустыми или хранить элементы не более заданного количества N (в файле и скрине игры — по 4) • элемент может быть перемещён только сверху на элемент такого же типа/цвета (после перемещения количество элементов в контейнере не может превышать N) или в пустой контейнер • элемент не может висеть в воздухе (гравитация) — то есть под каждым элементов должен быть другой элемент или дно контейнера (1ый в контейнере) • перемещать за 1 ход/шаг можно только 1 элемент
Задача считается решённой, если каждая колба заполнена элементами одного типа или является пустой
Задача: написать алгоритм (на VBA или нет), который бы возвращал полную последовательность перестановок элементов для решения задачи или количество дополнительных пустых колб для решения - в случае невозможности нахождения решения исходными данными
Доп. задача: сравнение алгоритмов на предмет скорости работы и/или оптимальности нахождения решения (минимальное количество перестановок) Если что - я пока ничего не делал, закрываю год на работе и много дел
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Количество элементов в контейнере (N): принимаем равным 4 Типов/Цветов элементов (T): принимаем равным 5 Колб всего: принимаем минимальное допустимое = T + 1 = 6
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Привет, Алексей. С наступающим! При таком раскладе - задача может и не иметь решения. Например в файле. По идее, число элементов в контейнере должно быть равно числу типов/цветов и количеству исходно заполненных контейнеров. Ну, и плюс один пустой для перекладки. К стати, и вашем исходном можно задать начальное состояние, не имеющее решения.
Андрей VG, приветствую! Спасибо — вас также Файлики обязательно гляну чуть позже
Цитата
Андрей VG: число элементов в контейнере должно быть равно числу типов/цветов и количеству исходно заполненных контейнеров
ну нет — на скрине из рабочего уровня игры как раз не так (не решал) Количество контейнеров (есть в #3) = (количество полностью заполненных контейнеров «F» = количество типов «T») + 1 (минимум) пустой контейнер для перефасовки
Цитата
Андрей VG: в вашем исходном можно задать начальное состояние, не имеющее решения
вполне — и именно поэтому я написал…
Цитата
Задача: написать алгоритм (на VBA или нет), который бы возвращал полную последовательность перестановок элементов для решения задачи или количество дополнительных пустых колб для решения - в случае невозможности нахождения решения исходными данными
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Андрей VG, приветствую! Что-то не увидел кода в файлах
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄