Цитата
Вы меня простите, но человек НЕ понимает, что пишет. Нет никакого сжатия до разумного размера!
Многомерный массив сжимается всего лишь ровно в 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?" будут отвечены в последнюю очередь.
ЗЫ Приветствуются ваши комментарии, соображения, предложения и т.п.
Как, по-вашему, лучше записывать комбинацию. Как сравнивать их на старшинство. Спокойно, аргументировано предложите своё решение...очень возможно, что я воплощу его в код.