Пилю программку по обсчёту китайского покера

Последний пост:26.11.2023
22
1 6 26 27 28 29 48 114
  • Цитата (Jak @ 22.12.2019)
    Избавился от загрузки массивов с комбинациями. Теперь их не будет в рассылке.
    Генерирую сразу за 1,5 сек все 3 массива. Массив для 5 карт сократил с 22,8мб до 1,4мб. Всего 357006 элементов покрывают все 2,6млн комб. Просто сжал до одинаковых пятерок, которые не флеш.


    Ждем рассылку. Ты, помню писал о том, что стартера неправильно считало.
    14/17
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 22.12.2019)
    не может быть такого. Около половина из 2.6 млн - комбинация младше "пара", а это значит 5 кикеров, их сжать невозможно.

    А сколько всего разных флешей? 1277=С(13,5)-стритфлеши (10шт). Не так и много. Тоже все в одно место ведут.
    Цитата (DmNass @ 22.12.2019)
    Ты, помню писал о том, что стартера неправильно считало.

    Да. Когда добавил бонусы Galax8, там сдвинулись бонусы, а я не проверил, потому и считало неверно.
    Щас увеличил время выбора лучших 10% стартеров, остальные отбрасываю, не считаю все 192 варианта. Ну и скорость расчета стартеров увеличил.

    А еще поговорим про пары. Насколько их можно сжать?

    Всего пар в колоде 1098240. И их можно сжать до 17160 различных пар, и они будут охвачены ВСЕ!!!
    52/314
    Ответить Цитировать
    0
  • Цитата (Jak @ 22.12.2019)
    134459 с учетом перестановок по мастям

    круто, чо. Хотя это не страшно, мощность колоды карт - 52 карты, дерево префиксных суффиксов будет немногим больше, чем для алфавита (там ~30 букв).
    Я пока одного не могу понять...почему в алгоритме ru.wikipedia.org/wiki/Расстояние_Дамерау_—_Левенштейна возможны перестановки только соседних символов. А если расширить на всю строку? Не станет ли он "тормозить"?
    216/741
    Ответить Цитировать
    0
  • Цитата (Jak @ 22.12.2019)
    Всего пар в колоде 1098240. И их можно сжать до 17160 различных пар, и они будут охвачены ВСЕ!!!

    Круто! И почему ты не сделал это раньше? Какое у тебя быстродействие поиска/сортировки/удаления(вставки) для массива?
    Для поиска, как я уже понял, всего 5 запросов
    217/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 22.12.2019)
    Круто! И почему ты не сделал это раньше? Какое у тебя быстродействие поиска/сортировки/удаления(вставки) для массива?
    Для поиска, как я уже понял, всего 5 запросов

    Да как-то не было необходимости, массив есть уже >10 лет, проблем не было, потому и не пытался сжать его. А тут при раскладывании стартеров заметил, что некоторые дают одинаковые рез-ты, а некоторые, которые ДОЛЖНЫ давать одинаковые рез-ты - нет. Начал искать, где разница и увидел, что много ветвей в массиве. Сила руки одинакова, но пути к ней разные, начал копать и сделал все пути поиска в массиве одинаковых пятерок одинаковыми. И пошло сразу ускорение. То же сделал для трех карт вверху.

    Про быстродействие запросов.
    Возьми любой массив, хоть из 5 элементов. Сделай цикл от 1 до 10 млн, например, внутри поставь 5 операторов подряд типа a=x[1]; b=x[2]; c=x[3]; d=x[4]; e=x[5]. И посчитай сколько миллисек займет этот цикл. Вот примерно столько и у меня. В "e" получаем ответ запроса.

    Сортировки никакой нет. Порядок карт произвольный, все придут к одному ответу.

    Но тебе это ни к чему. Ищи расстояние Дамерау—Левенштейна.
    53/314
    Ответить Цитировать
    0
  • Цитата (Jak @ 22.12.2019)
    Но тебе это ни к чему. Ищи расстояние Дамерау—Левенштейна.

    ну, там не такой сложный алгоритм. Гораздо больше придётся повозиться с префиксным деревом.

    Цитата (Jak @ 22.12.2019)
    Сортировки никакой нет. Порядок карт произвольный, все придут к одному ответу.

    я спрашивал про сортировку самого массива. Как ты находишь все комбинации старше/младше флаша ?
    Удаление тоже из массива. Как быстро ты можешь найти все комбинации, содержащие/не содержащие ?
    218/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 22.12.2019)
    я спрашивал про сортировку самого массива. Как ты находишь все комбинации старше/младше флаша ?

    а мне это не надо.
    Цитата (БиллиУбили @ 22.12.2019)
    Как быстро ты можешь найти все комбинации, содержащие/не содержащие ?

    а побитовое сравнение не пробовал?
    54/314
    Ответить Цитировать
    0
  • Цитата (Jak @ 22.12.2019)
    а мне это не надо.

    эээ...то есть ты "собираешь комбинации" на более высоких линиях заранее не зная, какими они выйдут?
    ну, у тебя внизу вырисовывается стрит, ты будешь собирать в мидл флаш и только после заполнения всех ячеек поймёшь, что рука - "мёртвая"?
    Цитата (Jak @ 22.12.2019)
    а побитовое сравнение не пробовал?

    на массиве из 1млн и обычном сравнении уже набегают секунды. Сомневаюсь, что побитовое сравнение тут что-то исправит. O(N) никуда не денется
    219/741
    Ответить Цитировать
    0
  • Цитата (Jak @ 22.12.2019)
    Избавился от загрузки массивов с комбинациями. Теперь их не будет в рассылке.
    Генерирую сразу за 1,5 сек все 3 массива. Массив для 5 карт сократил с 22,8мб до 1,4мб. Всего 357006 элементов покрывают все 2,6млн комб. Просто сжал до одинаковых пятерок, которые не флеш.


    Интересно то как, а скачать где нибудь можно?
    108/882
    Ответить Цитировать
    0
  • Цитата (Jak @ 22.12.2019)
    Сила руки одинакова, но пути к ней разные


    Музыкальная пауза ))
    220/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 22.12.2019)
    на массиве из 1млн и обычном сравнении уже набегают секунды. Сомневаюсь, что побитовое сравнение тут что-то исправит. O(N) никуда не денется

    какие секунды? возьми два массива размером по 2,6млн эл-тов. в первом будут все пятибитовые комбинации. и из одного в другой перепиши все эл-ты в которых есть твоя тройка, сравнивая элементы из первого массива с тройкой. сколько займет времени?
    Цитата (c00l0ne @ 22.12.2019)
    Интересно то как, а скачать где нибудь можно?

    ну можно прям с моего компа. а тебе зачем?
    55/314
    Ответить Цитировать
    0
  • Jak, Если я правильно понял, ты просто сжал физический размер массива данных? А скорость доступа к конечной комбинации осталась прежней - все те же пять обращений в массив? Или не так?
    21/52
    Ответить Цитировать
    0
  • Цитата (Jak @ 22.12.2019)
    сколько займет времени?

    1 раз - менее секунды, 100 раз - 20 сек. Теоретически, таких вызовов должно быть очень много(после каждого выхода/разложения очередной "тройки" как минимум). Ну, это если искать, чем может закончиться текущая незавершённая линия. Если собирать руку до конца и только потом определять, "мёртвая" рука получилась или нет, то можно и без этого обойтись, наверное
    221/741
    Ответить Цитировать
    0
  • Цитата (Jak @ 22.12.2019)
    какие секунды? возьми два массива размером по 2,6млн эл-тов. в первом будут все пятибитовые комбинации. и из одного в другой перепиши все эл-ты в которых есть твоя тройка, сравнивая элементы из первого массива с тройкой.

    Блин, а как ты вообще раскладываешь фантазию из 14 карт? По идее, надо найти все разложения внизу С(14,5) = 2002, сохранить их, потом почистить массив найти столько же расположений в мидл, потом заполнить топ, проверить руку на старшинство комбинаций и подсчитать очки. 2002*2000*364 "очков" надо где-то хранить...+постоянные запросы на старшинство(сравнения)...мрак...
    222/741
    Ответить Цитировать
    0
  • Цитата (Galax @ 22.12.2019)
    Jak, Если я правильно понял, ты просто сжал физический размер массива данных? А скорость доступа к конечной комбинации осталась прежней - все те же пять обращений в массив? Или не так?

    Да. 5 обращений.
    Раньше, если я хотел формировать массив в начале работы, получалось, что надо заполнить много финалов (конечное значение силы руки), причем для разных неотсортированных входных вариантов и это было долго, то сейчас все быстро и я решил не грузить массив, а делать его сразу. Получилось.
    Раньше для заполнения всего массива надо было посчитать > 5млн финалов, то сейчас всего 231868. Только что проверил. И они покрывают все варианты.
    Цитата (БиллиУбили @ 22.12.2019)
    Блин, а как ты вообще раскладываешь фантазию из 14 карт? По идее, надо найти все разложения внизу С(14,5) = 2002, сохранить их, потом почистить массив найти столько же расположений в мидл, потом заполнить топ, проверить руку на старшинство комбинаций и подсчитать очки. 2002*2000*364 "очков" надо где-то хранить...+постоянные запросы на старшинство(сравнения)...мрак...

    Блин. Как ты пишешь такой проект, если элементарное не можешь посчитать?

    Раскладываем фанту из 14 карт.
    Имеем массив int[14].
    Запоминаем в рабочий массив/копию. Вниз положить 2002 варианта. Берем один вариант.
    Убираем из копии 5 выбранных карт. Осталось 9 карт.
    Из 9 карт берем 5 карт. Всего 126 вариантов (где ты насчитал 2000*364 ?????). Остальные идут вверх. *1.
    Итого вариантов 2002*126*1.
    Берем низ. 5 обращений для низа = ответ. Если меньше, чем пара - нахер его, следующий низ. Запомним его.
    Берем мид. 5 обращений для мида = ответ. Сравним с низом, если старше - нахер его, следующий. Запомним его.
    Сделал массив для 4 карт (был в загрузке с программой) в котором уже посчитаны все варианты для 4-х троек из топа. 4 обращения для топа = ответ. Сравним с мидом, если старше - нахер его. Запомним. Сравним со старым максимумом.

    За секунду считал 65 разных фантазий. Поищи на форуме эту тему. Вот например https://forum.gipsyteam.ru/index.php?viewtopic=77848&st=20#entry2994171.
    Почитай, это было в 2014 году.
    Щас распараллелил расчеты, вообще летает.
    Сообщение отредактировал Jak - 22.12.2019, 20:55
    56/314
    Ответить Цитировать
    0
  • Цитата (Jak @ 22.12.2019)
    Всего 126 вариантов (где ты насчитал 2000*364 ?????).

    тут я нагнал жути. Да, для мидла и топа можно выбирать карты из оставшихся 9 =14-5.
    <...>
    Я пока под впечатлением от разложения стартера (всё вниз, как лучший вариант), поэтому пока воздержусь от дальнейших комментариев. Попрограммирую лучше расстояние Дамерау — Левенштейна. Не думаю, что его придумали просто так, от нечего делать...
    223/741
    Ответить Цитировать
    0
  • Цитата (Jak @ 22.12.2019)
    ну можно прям с моего компа. а тебе зачем?


    Потестировать...
    Или прошло уже "все для народа" ...
    109/882
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 22.12.2019)
    Я пока под впечатлением от разложения стартера (всё вниз, как лучший вариант), поэтому пока воздержусь от дальнейших комментариев.

    Ты где такое видел? В видео у c00l0ne?
    Цитата (c00l0ne @ 22.12.2019)
    Потестировать...
    Или прошло уже "все для народа" ...

    А что там тестировать? На входе и выходе все совпадает.
    "Для народа" не прошло. Только народ встретил как-то
    Один человек только как-то заинтересовался.
    Да и программка еще сырая, сделаю все пункты более-менее, выложу.
    57/314
    Ответить Цитировать
    0
  • Цитата (Jak @ 23.12.2019)
    Ты где такое видел? В видео у c00l0ne?

    Сорри, не как лучший вариант, а с МО > 10 очков
    Цитата (БиллиУбили @ 10.12.2019)
    посмотри видео кулона с 22ой минуты. Стартер
    при разложении все в сад всё вниз, у тебя ЕВ ~ 10.4 очка


    Цитата (Jak @ 23.12.2019)
    Да и программка еще сырая, сделаю все пункты более-менее, выложу.

    У программы уже неплохой потенциал. Разложение более 100 фантазий за секунду, побитовое сравнение комбинаций...Тебе осталось получить совпадение результатов для точно посчитанных стартеров
    224/741
    Ответить Цитировать
    1
  • Цитата (БиллиУбили @ 23.12.2019)
    У программы уже неплохой потенциал. Разложение более 100 фантазий за секунду, побитовое сравнение комбинаций...Тебе осталось получить совпадение результатов для точно посчитанных стартеров

    Подъеб засчитан. Причем ты почему-то всякую херню в потенциал записал.

    Сейчас программа академически точно считает подъемы после своих 7 карт, те 3-й, 4-й и тд. Могу с любым забиться на бабки, что считает точно! А мнение, что: "Ну думаю, что тут не так должно быть!" - засуньте себе в ж...
    И могу с кем-то забиться, что считаю точно и быстро. Кто может посчитать быстрей?

    Расклад стартера при достаточно большом кол-ве вариантов в МК, считает тоже хорошо. Не 500, не 1000, а хотя бы 20000-50000 - будет очень хорошее приближение. И опять же, прога считает циферки, на красоту расклада ей положить большой х..., а чел всегда еще красоту прикладывает. И если она говорит, что тут 10 кушей, значит так и есть.

    А где-то есть посчитанные стартеры? Дайте посмотреть хоть один. Или простого взгляда c00l0ne достаточно? Он же авторитет. В своем блоге всех загнобил, его мнение единственно верное.

    Вот достигнешь такого же - потом поговорим. А пока твой калькулятор может только карты тасовать. Да и то навряд ли. Покажи хоть внешний вид? Или там консоль, пустое окно?
    Думаю, как только расстояние посчитаешь - твоя прога тоже начнет фантазии считать. Только фантазии. Она даже этого не умеет. Самое легкое, найти лучший расклад 14, 15, 16 и 17 карт.
    58/314
    Ответить Цитировать
    0
2261 пост
1 6 26 27 28 29 48 114
1 человек читает эту тему (1 гость):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.