БиллиУбили @ 26.3.2020
я сбрасывал найденные комбинации в контейнер, а потом проходил его с начала до конца
Сейчас посмотрел прошлогодний проект. Хоть я и начал мерить производительность ближе к концу...но там контейнер на контейнере, да ещё и попытка обернуть в классы...возможно и из-за этого не удалось достигнуть быстродействия. Сейчас только обращение в дерево, никаких накоплений...
Потихоньку заканчиваю разложение фантазии по шаблону. Должно выйти чуть-чуть быстрее, чем полный перебор. С одной стороны, мне не надо перебирать ВСЕ разложения карт по боксам, но с другой стороны, я трачу время на возможные теоретические, но не реализуемые на практике варианты(например, в теории я могу разложить Флаш/Флаш, а в реальности у меня 9 одномастных карт).
Но, не это самое интересное. Кажется, появилась новая идея
-фикс
.
А что, если закольцевать дерево? То есть сделать "второй" корень, в который будут вести все очки, которые набирает та или иная комбинация. Тогда мне не надо будет обходить всё дерево. Достаточно будет идти снизу вверх и все комбинации будут найдены "мгновенно".
Красивое решение, как мне кажется.
А может ли такое массив? Можно ли найти все фулхаусы без полного обхода массива HR[5]? А?
ну, да. Всего лишь 2-3 цикла(витка) рекурсии, причём можно и последовательно. Сначала раскладываем фантазию на бесконечном наборе(каждая карта из 14-17 карт может принять участие в 1-2-3 комбинациях одновременно, то есть попасть И в топ, И в мидл, И вниз), а потом либо удаляем невозможное(не рекурсия), либо снова запускаем доразложение фантазии на бесконечном наборе, но уже из 9-12 карт. Потом тоже для набора из 4-7 карт и на этом всё.
Как такое написать без рекурсии, я слабо понимаю. Там будет 10+ циклов разной вложенности...завидую нервам Жак-а