Переписал разложение фантазии.
Правда, пока вместо поиска комбинации стоит заглушка, но не в этом суть.
Метода работает так:
0. Строим список возможных фантазий(СВФ) в виде(линия, линия, линия, очки)
1. Сортируем по убыванию(грубо говоря, формируем очередь)
2. Начинаем с максимально возможных очков(РФ, РФ, 999)
3. Если из указанных 17 карт роялфлаш не собрать - удаляем всем РФ из СВФ
(ведь, если его не собрать из 17 карт, то и не собрать из 12, 10, 5 и т.д.)
4. Нам удалось собрать флаш(например). Присоединяем его в качестве потомка в дерево "решения" в виде (флаш из 5 карт, колода из 12 карт)
5. Продолжаем (рекурсивный) поиск, где в качестве "родителя" - текущая нода. Соответственно, если у нас заказ на (флаш, стрит, QQх) - то дальше мы будем искать стрит.
6. Ищем до первого совпадения собранной руки и "заказа" из СВФ.
Преимущества перед предыдущим подходом.
1. Не надо искать все 5карточные комбинации в самом начале.
2. Ранее найденные комбинации сохраняются в дереве "решения"
Теперь осталось переписать поиск комбинации нужного ранга из N карт.
Здесь планирую использовать следующие нововведения:
1. Использовать X деревьев, где Х - число возможных рангов комбинации(флаш, стрит и т.д.)
здесь благодарность Jak, это наиболее удобный(необременительный) подход
2. Заменить поиск среди потомков на прямой переход. Благо, чуть-чуть научился работать с деревьями
ЗЫ Всем спасибо за поддержку. Сейчас убегаю на работу, скоро продолжим.
ЗЫ2 Статейки читать безусловно интересно, но найти какое-то чудесное, сверхъестественное решение вашей проблемы вам не удастся )) Надо просто брать и делать
то, что как минимум общеизвестно(общепризнанно)
в таких компаниях за слова приходиться отвечать ) это не рашка , ладно пойду работать
я кстати такие видео без звука смотрю и тебе рекомендую )