Вы меня простите, но человек НЕ понимает, что пишет. Нет никакого сжатия до разумного размера!
Многомерный массив сжимается всего лишь ровно в 5! = 120 раз, за счёт того что он ВРУЧНУЮ трактует комбинации, одинаковые до перестановки, как одну.
БиллиУбили @ 2.2.2020
для версии 1.0
ЗЫ Приветствуются ваши комментарии, соображения, предложения и т.п.
Как, по-вашему, лучше записывать комбинацию. Как сравнивать их на старшинство. Спокойно, аргументировано предложите своё решение...очень возможно, что я воплощу его в код.
Galax @ 2.2.2020
более в 1000 раз больше.
c00l0ne @ 2.2.2020
а где скачать то ? лол
c00l0ne @ 2.2.2020
так и будешь публиковать что там в версиях ....
c00l0ne @ 2.2.2020
БиллиУбили, ну так он не просто вылезает а он абсолютно прав
c00l0ne @ 2.2.2020
а зачем , для какой цели? читателям вносить свои предложения?
БиллиУбили @ 2.2.2020
52 карты представлены в виде ASCII-символов
БиллиУбили @ 2.2.2020
поиск по строке
БиллиУбили @ 2.2.2020
2. Найти все комбинации с данной картой(картами).
Переходим из корня по ответвлениям, соответствующим данным картам. Когда данные карты кончаются, начинаем переходить по всем ответвлениям.
БиллиУбили @ 2.2.2020
Разложить фантазию из 14-17 карт
Рекурсивно берём 5 карт, находим комбинацию, далее переходим к набору из 9-12 карт, снова ищем комбинацию и т.д.
БиллиУбили @ 2.2.2020
4. Разложить фантазию с учётом разложения стартера.
Комбинация пунктов 2-3. Берём карты из стартера, которые мы положили в нижний бокс и ищем комбинации, в которые они входят. Далее переходим к среднему боксу и повторяем поиск.
Из троек комбинаций собираем фантазию.
5. Найти разложение стартера (в процессе)
Дополняем стартер до набора 14-17 карт, записываем разложение карт стартера (в виде 01221) и очки за фантазию.
(тут пока без суммирования всех разложений, с любыми очками, не обязательно макс).
Определяем топ-10 и повторяем разложение фантазии, путём И дополнения стартера до набора 14-17 карт, И последующим разложении фантазии с учётом определённых позиций(12200) карт стартера.
c00l0ne @ 2.2.2020
почему не цифры ?
c00l0ne @ 2.2.2020
ты представляешь что такое поиск по строке ? что это за объем работы для компьютера ?
c00l0ne @ 2.2.2020
обход дерева достаточно затратная задача, не проще написать линейный алгоритм ...
из пары мы можем сделать допустим карэ или фулл и т.д.
c00l0ne @ 2.2.2020
все это делается рекурсивно простым алгоритмом ... зачем бегать по дереву...
БиллиУбили @ 2.2.2020
есть 52 карты - 52 сущности. Какая разница, как я буду их различать: числа от 0 до 52...буквы латинского алфавита...
китайские иегроглифы...
продолжи свою мысль на пару ходов вперёд
я не знаю, в чём он прав. ну, 52^5 комбинаций...по 4 байта...по 44
как можно сжать его более, чем до С(52,5) комбинаций???
Хочешь выкинуть уникальные?
c00l0ne @ 2.2.2020
видимо 5 карт выкладываются и ты ищещь все комбы
но п5 то как заработает ?
Galax @ 2.2.2020
Ты действительно хочешь знать как? Тогда почитай этот пост до конца
БиллиУбили @ 2.2.2020
Пост прекрасный. Читал его более двух раз. Вот только сократить кол-во комбинаций менее кол-ва уникальных у тебя не получится. Иначе возникнет коллизия: я подам на вход комбинацию
, а у тебя в массиве-то её и нет(как нет и её перестановок и т.п.).
Вот смеху-то будет...
c00l0ne @ 2.2.2020
перебирать перебирать ... по дереву н сот раз гонять одно и то же ....
БиллиУбили @ 2.2.2020
плюс моего алгоритма - он не ошибается. В том смысле, что он перебирает ВСЕ комбинации. В отличии от твоего, где ты делаешь "ручные" шаги: вниз кладём макс. комбинацию...ой, а она не самая сильная...ой, а существует вторая такая же по силе...ОЙ, МЫ НЕ ВСЕ КОМБИНАЦИИ ОБОШЛИ
если нет большой разницы по производительности - не вижу смысла городить огород
c00l0ne @ 2.2.2020
разница существенно, можно выполнять операции бинарные ) на производительность повлияет ..
ЧТО БЫЛО ПРИ СТАЛИНЕ. ЧТО МЫ ПОТЕРЯЛИ.Что сделано на данный момент.
52 карты представлены в виде ASCII-символов. От А до Z и от a до z. Так удачно совпало, что в латинском алфавите 26 букв.
"Готовые" комбинации хранятся в виде дерева, с 52 ответвлениями на следующий уровень. Всего 5 уровней.
Набор, как и комбинации - строки из 5(N) символов.
Проблемы и решения.
1. Входит ли данная карта в данную комбинацию?
поиск по строке
2. Найти все комбинации с данной картой(картами).
Переходим из корня по ответвлениям, соответствующим данным картам. Когда данные карты кончаются, начинаем переходить по всем ответвлениям.
3. Разложить фантазию из 14-17 карт
Рекурсивно берём 5 карт, находим комбинацию, далее переходим к набору из 9-12 карт, снова ищем комбинацию и т.д.
4. Разложить фантазию с учётом разложения стартера.
Комбинация пунктов 2-3. Берём карты из стартера, которые мы положили в нижний бокс и ищем комбинации, в которые они входят. Далее переходим к среднему боксу и повторяем поиск.
Из троек комбинаций собираем фантазию.
5. Найти разложение стартера (в процессе)
Дополняем стартер до набора 14-17 карт, записываем разложение карт стартера (в виде 01221) и очки за фантазию.
(тут пока без суммирования всех разложений, с любыми очками, не обязательно макс).
Определяем топ-10 и повторяем разложение фантазии, путём И дополнения стартера до набора 14-17 карт, И последующим разложении фантазии с учётом определённых позиций(12200) карт стартера.
ПОка всё. Задавайте ваши ответы. Вопросы "автор, ты - дурак? почему не используешь массив HR5?" будут отвечены в последнюю очередь.
ЗЫ Приветствуются ваши комментарии, соображения, предложения и т.п.
Как, по-вашему, лучше записывать комбинацию. Как сравнивать их на старшинство. Спокойно, аргументировано предложите своё решение...очень возможно, что я воплощу его в код.