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

Последний пост:26.11.2023
22
1 16 17 18 19 38 114
  • Еще бы посоветовал не со стартового расклада начинать, а развивать алгоритм в обратном направлении
    Сначала научить класть последний подъем, затем предпоследний и т.д.
    2/3
    Ответить Цитировать
    1
  • Цитата (БиллиУбили @ 6.6.2019)
    Мы просто сокращаем ВСЕ возможные комбинации на 5!=120, то есть, грубо говоря, производим сортировку "на лету".

    Да не, ложна тревога какая-то.
    Размер массива, который я использую для определения ОП 100-150Мб, нет никакого практического смысла его сворачивать/оптимизировать. Просто я, как всегда, почему-то решил, что он будет 3Гб(у страха глаза велики)
    Сейчас попробовал скинуть его в файл и это обнаружилось.
    А вообще, файл более 2Гб может держать
    count = std::numeric_limits<int>::max();



    Мурзик, у вас есть какие-либо соображения по задачке https://forum.gipsyteam.ru/index.php?viewtopic=142685&st=60#entry5978018?
    Я её "решил" методом ОП, тут критика тоже приветствуется
    148/741
    Ответить Цитировать
    0
  • Господа, требуется ваша помощь. Надо разбить массив из N элементов на 2: из M и (N-M) элементов(М элементов из N выбираются произвольно). Традиционный способ, копирование элементов из "старого" массива в "новые" слишком ресурсозатратен. Желательно, чтобы это была бы какая-нибудь надстройка, которая хранит информацию об M и, соответственно, N-M элементах, а работа шла бы со старым массивом, без создания "новых"
    149/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 7.6.2019)
    Господа, требуется ваша помощь. Надо разбить массив из N элементов на 2: из M и (N-M) элементов(М элементов из N выбираются произвольно). Традиционный способ, копирование элементов из "старого" массива в "новые" слишком ресурсозатратен. Желательно, чтобы это была бы какая-нибудь надстройка, которая хранит информацию об M и, соответственно, N-M элементах, а работа шла бы со старым массивом, без создания "новых"


    Я кидал ссылку на .NET проект несколькими постами выше, там исходники можно скачать, посмотри как они реализуют перебор возможных раскладов, они обсчитывают несколько десятков миллионов комбинации в секунду, и это на .NET)
    3/3
    Ответить Цитировать
    0
  • Мурзик,
    я хотел попробовать этот проект в Visual Studio , но запустить его не получается :


    может подскажешь как изменить проект с учетом того что уже не 2009 год.
    (сразу скажу что я не профи программист, просто любитель)
    1/14
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 7.6.2019)
    Господа, требуется ваша помощь. Надо разбить массив из N элементов на 2: из M и (N-M) элементов

    Спасибо, уже не нужно.

    Цитата (Мурзик @ 8.6.2019)
    они обсчитывают несколько десятков миллионов комбинации в секунду, и это на .NET

    Спасибо за ссылки. Как они посчитали быстродействие? Посчитали одну руку и получили 0.000000х секунды?

    2All
    Полный перебор пока буксует. Попробую промежуточное приближение. На каждом подьёме приходят 2(НЕ 3) карты, которые надо разложить так, чтобы максимизировать ЕВ.
    150/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 8.6.2019)
    Полный перебор пока буксует. Попробую промежуточное приближение. На каждом подьёме приходят 2(НЕ 3) карты, которые надо разложить так, чтобы максимизировать ЕВ.

    Так, есть первые результаты для 2ух подьёмов. В том смысле, что какой-то результат считается быстро(мгновенно).
    Алгоритм работает так.
    Перенумеруем оставшиеся 4 свободных места. Тогда для 4 карт существует 4*3*2*1 вариантов(шаблонов) для разложения(на самом деле уникальных меньше, но пока не будем отвлекаться)
    Тогда действуем по шагам:
    1. Выбираем 2 карты из колоды
    2. Выбираем ещё 2 карты
    3. Раскладываем по шаблонам от 1 до 24
    4. Для каждых карт из п1. находим шаблон с максимальными итоговыми очками - это и будет разложение 4ого(предпоследнего подьёма)
    Общее ЕВ для руки будет среднее кол-во по всем парам карт из п1 и последующего разложения из п№4.
    Единственное, в чём подводит процедурное программирование - выбор карт на шаге №2. Следующие карты не должны повторять предыдущие. Для этого нужны сравнения - а это, как показала практика, достаточно ресурсоёмкая операция.
    151/741
    Ответить Цитировать
    0
  • БиллиУбили, Привет! Подскажи как дела с программой? Получается? Когда планируешь доделать и дать народу потестить?
    1/4
    Ответить Цитировать
    0
  • Alexey_M, хех) желание халявы в русском народе неистребимо)
    6/9
    Ответить Цитировать
    0
  • Нормально так человек ворвался.
    1 день регистрации, 1 сообщение и сразу целенаправленно о программе для китая.
    Ты чей клон, пришелец? Гюльчитай, открой личико.
    1/7
    Ответить Цитировать
    0
  • Пилим игру в китайский покер с ботом 1 на 1 с одинаковыми картами.
    Первая версия готова:
    https://forum.gipsyteam.ru/index.php?viewtopic=149085
    2/4
    Ответить Цитировать
    0
  • Пока только два человека с этого форума заинтересовались разработкой. Если больше никому это не интересно, то мы пока приостановим разработку. Если, что пишите в лс.
    3/4
    Ответить Цитировать
    0
  • Alexey_M, программку временно забросил. После того как решил определять комбинацию путём поиска в массиве [52][52][52][52][52](ну, это чтобы не проводить сортировку)
    Памяти мне, естественно, не хватило даже для теста...и я загрустил.
    Но вот прям сегодня случайно(!) наткнулся на Нечёткий поиск в тексте и словареhttps://habr.com/ru/post/114997/. И кажется мне, что моя первая попытка(=работа со строками) была интуитивна правильной.
    А вот злой c00l0ne специально(?) сбивал меня на переход к целым числам и всё стращал производительностью.
    Так что в ближайших планах найти макс. комбинацию для набора из 5, 6 и 7 карт.
    Как поиск по словарю в тексте.
    Так сказать, размяться.
    ЗЫ Пиши в личку.
    ЗЫ2 Разработку программы ни в коем случае нельзя прекращать. Ведь мы(надеюсь, и ты) просто повторяем, что уже было кем-то сделано. А если кто-то это сделал, то значит...это можно сделать.
    152/741
    Ответить Цитировать
    0
  • Ну, и вкратце напишу, что я планирую сделать. С алгоритмом поиска знакомлюсь первый день, прошу ногами не пинать.
    1. Сопоставить карте(номинал, масть) одну букву алфавита
    2. Составить словарь, то есть перечень комбинаций(слов) по старшинству
    3. Удалить из метрики операцию "удаление"(оставить только вставку)
    4. Тогда операция разложения стартера будет равносильна поиску мин. расстояния до максимального кол-ва очков.
    4а. Разложение оставшихся подьёмов будет идти по такому же принципу(+ с учётом старшинства комбинаций снизу вверх)
    5. Пока ещё непонятно, как определять "расстояние" сразу для 3ёх линий, но что-нибудь придумаем.
    ЗЫ Слава богу, предыдущая попытка немного охладила пыл. Так что сразу программировать не буду, сначала напишу всё на бумаге ))
    153/741
    Ответить Цитировать
    0
  • БиллиУбили,
    Склонял я его


    Чсв для начала надо приуменьшить , потом с умными людьми разговаривать
    65/882
    Ответить Цитировать
    0
  • Цитата
    А вот злой c00l0ne специально(?) сбивал меня на переход к целым числам и всё стращал производительностью.


    Скажи честно , доллар фантик? Американцы сами взорвали миниядерными зарядами две башни и никогда не были на луне? Ф22 Раптор имеет эпр меньше 0.0001 и недосягаем для с300 и с400 ?

    Это популярные темы для любителей теорий заговоров...
    66/882
    Ответить Цитировать
    0
  • Раскладываю один. Вся колода полная, 52 карты. Кладу себе любых 9 карт, три карты пришли (предпоследний подъем). Осталось в колоде 40 карт. Полным перебором оставшихся определяю лучший вариант как положить эти 3 карты. Занимает 0,2 сек. Точно считает все бонусы и ауты.
    А если есть соперники - то вообще мгновенно.
    10/314
    Ответить Цитировать
    0
  • При раскладывании первых пяти карт, проблема в том, как оценить какая комбинация лучше. Если считать просто по шансам собрать максимальную руку по бонусам, прога предлагает вариант, когда в топе карты от дамы до туза. Плевать ей, что можно застрелиться. Выигрыш от фантазии больше.
    Даже если нет в первых пяти картах картинок от дамы или валета, она может положить в топ десятку или 8-ку.
    И при первом подъеме трех карт, тоже предлагает дикие варианты с картинками в топ.
    11/314
    Ответить Цитировать
    0
  • Цитата (Jak @ 21.11.2019)
    Полным перебором оставшихся определяю лучший вариант как положить эти 3 карты.

    ну, ок. А можешь полным перебором положить 2ой подьём? То есть 3 карты приходят к первым 5?

    Цитата (Jak @ 21.11.2019)
    Даже если нет в первых пяти картах картинок от дамы или валета, она может положить в топ десятку или 8-ку.

    тут дело, как мне кажется, не в том, чтобы положить даму+ в том, а в том, что 3 карты в мидл - слишком большое ограничение на возможную комбинацию. Если это три одномастные, то с флаша не соскочить, и т.д.
    154/741
    Ответить Цитировать
    0
  • Мочь-то я могу, только смысла нет.
    Если нас трое и я последний - это примерно 5 часов счета ложить тройками. А если я один - то даже не пробовал, наверно пару суток.
    Нет смысла потому, что уже после 50000 раскладов Монте-Карло хорошая сходимость и можно легко определить лучший вариант.
    12/314
    Ответить Цитировать
    0
1 16 17 18 19 38 114
1 человек читает эту тему (1 гость):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.