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

22
Статистика
Статистика
22
Статистика за месяц
  • Популярность
    Топ-166
  • Постов
    0
  • Просмотров
    +833
  • Подписок
    0
  • Карма автора
    0
Лучшие посты автора
1 5 25 26 27 28 47 114
  • c00l0ne @ 17.12.2019
    что тебе придется палить три карты опов алгоритму

    я пока что решаю разложение руки в вакууме, без регистраций и СМС оппонентов

    c00l0ne @ 17.12.2019
    Это возможно только на супер железе 1к ядер+

    ну, всё, пацаны, расходимся? слышу это заклинание который год ))
    Ответить Цитировать
    207/741
    + 0
  • БиллиУбили, s1 s32 матрицы состояний
    Функция f (s1) допустим даёт вес...
    Max f(si) это вес для предыдущей ноды и так до стартера

    Если бы не было проблемы в вычислительной мощности давно бы солвер выпустили или ты думаешь никто до тебя не писал? Я лично видел 2 разных софтины годно считающих... Но на серверах мощных...

    Пс тебе рекомендую начать с матчасти... То что ты за метод Монте Карло принимаешь это просто полный перебор, а по серьезному метод MCTS(monte carlo tree search) делается так как я написал выше... Но для задач с неизвестной информацией его сложно применять, кстати если подмешать сюда пару нейронных сетей то получиться альфазеро
    Сообщение отредактировал c00l0ne - 17.12.2019, 13:16
    Ответить Цитировать
    104/882
    + 0

  • Конкретику давай. Если у меня 588 вариантов закончить, то на каком этапе мне подрубать Монте - Карло? Выкинуть из них 450?


    Мы считаем для конкретной симуляции, поэтому нам не нужно хранить все дерево решений, достаточно обновлять веса...

    Перебираешь варианты обновляешь веса... Вот и весь алгоритм,
    Но если бы мы писали бота , то тогда нам пришлось бы хранить все дерево решений... Которое "больше чем атомов во вселенной"...
    Но и для этого есть алгоритмы с нейронными сетями
    Ответить Цитировать
    105/882
    + 0
  • Если есть вопросы задавай...безбомбежа только
    Ответить Цитировать
    106/882
    + 0
  • c00l0ne, если я правильно понял, метод MCTS используется в тех играх, где невозможно оценить текущее состояние. Точнее, можно, но через дерево с весами. Это очень сложный подход, я надеюсь, что оценить "перспективы" текущего разложения можно проще.

    c00l0ne @ 17.12.2019
    Мы считаем для конкретной симуляции, поэтому нам не нужно хранить все дерево решений, достаточно обновлять веса...

    Своими словами можешь обьяснить? Вот, в данной шахматной позиции нам лучше сходить конём. Не потому что мы посчитали все возможные завершения партии, а прикинули на глазок: нам ответят слон с3, мы двинем пешку на линии b...вроде как получаем преимущество. То есть мы используем N известных завершений данной позиции.
    А что в Китае, в чём преимущество данного метода(перед полным перебором)?
    Ответить Цитировать
    208/741
    + 0
  • БиллиУбили @ 17.12.2019
    Я сейчас таки попробую поиском по массиву, но уже чувствую, что придётся пересесть на
    твой велосипед.

    Странно, но предчувствие меня не обмануло.
    Обратная задача. Имеем 3 рандомные карты, для которых ищем "продолжения" = 2ве карты, которые дают комбинацию старше "Ахай". Имеем массив векторов вида k1,k2,k3,k4,k5 где собраны все(!) комбинации старше "Ахай". То есть вектор 2,3,5,8,11(например) в этот массив не попадёт, так как образует комбинацию младше "пары".

    Результаты на выходе: все "продолжения".
    Быстродействие - более 1кк/с, то есть мгновенно. Тут, наверно, сказалось то, что не требуется сортировки. Хотя и требуется поиск.

    2 Jak, сорри за глупый вопрос. А вот этот волшебный массив, он на каком языке реализован? Паскаль или С++? Ну, даже не сам массив, а функции поиска/заполнения.

    Ну, и следующий вопрос. Присваиваешь ли ты уникальной комбинации уникальный ID, чтобы мгновенно определять, какая из двух(и более) старше?
    А пока ты отвечаешь, поищу "продолжение" для 2ух и 1ой карт.
    Ответить Цитировать
    209/741
    + 0
  • Забавный результат получился. Думаю где-то ошибка.

    Дело в том, что и 7-ка и 2-ка одинаковое число аутов, но двойка же дает немного больше стритов через туза.
    Ответить Цитировать
    13/17
    + 0
  • DmNass @ 17.12.2019
    Дело в том, что и 7-ка и 2-ка одинаковое число аутов, но двойка же дает немного больше стритов через туза.

    согласен , но даже если бы стритов было бы столько же, то разницы в 0,4 не может быть. А вариант 3 и 4 должны быть вообще равны.

    JAK, колись где напортачил
    Ответить Цитировать
    3/14
    + 0
  • brdss @ 17.12.2019
    А вариант 3 и 4 должны быть вообще равны.

    на эту особенность я уже указывал
    Ответить Цитировать
    210/741
    + 0
  • Наверно "3 cards" нажимал? это МК для 3 карт. Разумеется рассматривает только 200 вариантов из 4960.
    А попробуй "Full 3". Или "Combo" - тут вначале находятся 10 лучших вариков, потом они считаются полным перебором. По времени меньше, чем Full.
    БиллиУбили @ 17.12.2019
    2 Jak, сорри за глупый вопрос. А вот этот волшебный массив, он на каком языке реализован? Паскаль или С++? Ну, даже не сам массив, а функции поиска/заполнения.

    действительно ... вопрос, а какая разница? Внутри же нет указаний на язык. Одни циферки.
    В оригинале делался на C. Я делал его и аналоги для короткой колоды, 36 карт на Delphi. Языки же похожи. Практически одинаковы.
    Все занимает пару десятков строк. Тебе надо? Или уже слали?
    БиллиУбили @ 17.12.2019
    Ну, и следующий вопрос. Присваиваешь ли ты уникальной комбинации уникальный ID, чтобы мгновенно определять, какая из двух(и более) старше?

    ID ты получишь в конце, при пятом обращении к массиву. Там будет полное ID: комбинация (фулл, стрит, пара и т.д.) + все кикеры. Можно просто сравнивать между собой. Делаешь сдвиг вправо на 24 бита - и номер комбинации, младшие 20 бит - 5*4бит кикеры.

    Бля!!! Ну писал же я это давным-давно! Херли, сложно прочитать еще раз?
    Ответить Цитировать
    48/314
    + 1
  • БиллиУбили @ 17.12.2019
    Результаты на выходе: все "продолжения".
    Быстродействие - более 1кк/с, то есть мгновенно.

    Очередной крутой облом
    необучаемой породы

    Решал обратную задачу №2. Из колоды удалили 2 карты, найти новое пространство решений(массив возможных комбинаций). Время обсчёта насторожило...И вот тут выяснилось, что и обратная задача №1 мгновенно не решается. Хотя своими глазами помню, как увеличивал число прогонов...наверно, что-то напутал.

    Так что возвращаюсь к волшебному массиву.
    2 Jak, скинь, плиз код его заполнения. Ну, заодно, функцию нахождения "продолжений", если таковая есть.
    Как он работает я более-менее понял, единственное что осталось непонятным - какого он размера?
    Превышает известные 2.6кк байт или в точности равен ему?
    ЗЫ функция назначения id конкретной комбинации тоже будет полезна ))

    Jak @ 17.12.2019
    Бля!!! Ну писал же я это давным-давно! Херли, сложно прочитать еще раз?

    Что я могу сказать? Сорян. Чтобы придти к правильному решению, надо попробовать 2-3 "неправильных".
    Ответить Цитировать
    211/741
    + 0
  • Ничего по сорок раз слать не буду. Ищи сам.
    Ответить Цитировать
    49/314
    + 0
  • БиллиУбили @ 18.12.2019
    какого он размера?
    Превышает известные 2.6кк байт или в точности равен ему?

    Не совсем правильно задал вопрос. В нём 2598960 ячеек или больше? (если остальные ячейки пустые, он займёт столько же памяти)

    Господа, у кого сохранился файл с комбинациями из проги Jak? Просьба переслать мне.
    Ответить Цитировать
    212/741
    + 0
  • БиллиУбили,
    300 $
    Ответить Цитировать
    4/27
    + 0
  • mahatmaGandi @ 18.12.2019
    БиллиУбили,
    300 $


    Файл стоит?
    если что я за 299.99$ отдам)
    Сообщение отредактировал c00l0ne - 19.12.2019, 4:18
    Ответить Цитировать
    107/882
    + 0
  • mahatmaGandi, выслал тебе х*й на воротничок, чекай

    Ну, а пока Jak упорно подсовывает мне технологии 2000ых, будем двигаться дальше. Очевидно, что на обратной задаче(найти комбинации, включающие N произвольных карт) поиск по массиву захлёбывается. Ведь нужно проверить каждую ячейку, а их миллионы. Предлагаю использовать "поиск по словарю", с реализацией, скажем, в виде префиксного дерева.
    То, что это работает, я не сомневаюсь. Забив в строке поисковика "кита" вы мгновенно получаете подсказку "китайский".
    Теперь, прежде чем подрываться программировать, надо подумать об оставшихся обратных задачах: сортировке и удалении. Скажем, оппонент вытащил из колоды 2 карты - словарь должен "обеднеть" на все слова, содержащие эти карты. Снова отмечу, что перебор всего словаря(массива) "в лоб" также захлёбывается.
    Теперь сортировка. Ясно, что "китай" старше "каши", но младше "кувалды". Но тут есть нюанс. Слова - это слова. Они не допускают перестановок букв. А комбинации неразличимы вплоть до сколь угодного кол-ва перестановок(например, флаш). Но в словах люди делают ошибки, для чего и ввели расстояние Левенштейна, то есть считать написание "итак" за ошибочное написание "кита". Происходит классическое натягивание совы на глобус.

    В общем, жду ваших комментариев и соображений. Как бы вы запрограммировали колоду карт...словарь комбинаций...производили вставку/удаление/сортировку? Только своими словами, плиз(можно и с ссылками).
    Ответить Цитировать
    213/741
    + 0
  • в своей работе Михов и Шульц показали, что расстояние Дамерау-Левенштейна между инверсиями двух строк равно расстоянию между самими строками.
    https://habr.com/ru/post/276019/
    Этого следовало ожидать. Наконец-то пришло время пощупать "расстояние" руками.
    Появилась идея посчитать расстояние для подстроки (и всеми возможными комбинациями) и понять убедится, что в маленький радиус попадут только флаш и тройки(которые, естественно, будут в словаре).
    А весь "мусор"(если он будет в словаре) вынесет за радиус...
    ЗЫ Кто за, поставьте плюс!
    Ответить Цитировать
    214/741
    + -1
  • Избавился от загрузки массивов с комбинациями. Теперь их не будет в рассылке.
    Генерирую сразу за 1,5 сек все 3 массива. Массив для 5 карт сократил с 22,8мб до 1,4мб. Всего 357006 элементов покрывают все 2,6млн комб. Просто сжал до одинаковых пятерок, которые не флеш.
    Ответить Цитировать
    50/314
    + 0
  • Jak @ 22.12.2019
    Генерирую сразу за 1,5 сек все 3 массива

    ты бы хоть рассказал, что за массивы...
    Jak @ 22.12.2019
    Всего 357006 элементов покрывают все 2,6млн комб.

    не может быть такого. Около половина из 2.6 млн - комбинация младше "пара", а это значит 5 кикеров, их сжать невозможно. Если, конечно, ты не планируешь сравнивать на "старшинство" подобные комбинации
    Ответить Цитировать
    215/741
    + 0
  • Я никогда не вру. Даже жене.
    Ты не поверишь, но самолеты летают!

    А знаешь сколько всего различных комбинаций в колоде? С учетом флешей и всех пустых комбинаций? Этот факт я знал еще когда в 2000 решал стратегию для казиношного покера.
    134459 с учетом перестановок по мастям. Здесь и разные, тк нельзя перестановкой мастей из одной получить другую.

    И из них почти половина совпадает, если считать что сила рук под спойлером одинакова. В массиве эти руки совпадают, точнее ведут в одно место. У них одинаковая сила руки.
    Ответить Цитировать
    51/314
    + 0
1 5 25 26 27 28 47 114
1 человек читает эту тему (1 гость):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.