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

Последний пост:26.11.2023
22
1 51 71 72 73 74 93 114
  • БиллиУбили, твой способ решения проблемы раскладывания стартера УНИКАЛЕН!
    Я думаю, что никто так не делает!
    Тем более твои вставки:

    Цитата (БиллиУбили @ 22.4.2020)
    Спасло
    final_layouts = final_layouts2;

    шокируют/радуют только тебя. Слишком много информации в этом операторе
    А если поменять "2" на "22"? может еще лучше было бы?

    Цитата (БиллиУбили @ 22.4.2020)
    Как говорят блогеры: а как считаете вы? Напишите в комментариях )


    А тут комментарий такой:
    Часто в рекламе пишут: "Напишите нам: За ЧТО вы любите доширак?".
    Т.е. они сразу предполагают, что мы любим доширак, это вообще не подлежит сомнению! Осталось только выяснить "За ЧТО"?
    А если я не люблю доширак? Как ответить на вопрос?
    Да с х*я ли вы вообще решили, что мне интересен доширак?


    Так и у тебя, ты варишься в своем котле (это хорошо), но никто не был там, никто не понимает твои мысли, как мы можем тебе что-то посоветовать?
    141/314
    Ответить Цитировать
    1
  • Цитата (Jak @ 23.4.2020)
    твой способ решения проблемы раскладывания стартера УНИКАЛЕН!

    Как это уникален, если в #1413 посте, ты сам посчитал стартер по "моей" методе. Как-то ведь получил цифры 12270, 9315 и т.д.
    В зависимости от того, за что ты начисляешь "очки" определённому разложению, такой список(лидеры) у тебя и получится
    Цитата (Jak @ 23.4.2020)
    Слишком много информации в этом операторе

    Тут тоже всё просто. В контейнере(это коллекция пар "разложение+очки") запрещено редактирование элемента. Если для тебя это очевидно, то снимаю шляпу(для меня - нет)
    Поэтому приходится брать элемент из коллекции, брать оттуда разложение, находить "новые" очки, суммировать с предыдущими и записывать новый элемент в новую коллекцию. Потом сокращать в ней кол-во элементов и т.д. Можно было бы так и продолжить работать с получившейся коллекцией, а можно остаться в цикле, что я и делаю операцией, которую ты процитировал.
    А быстродействие я проверил, потому что я навскидку не знаю, как быстро осуществляется добавление\удаления элемента в коллекцию. Сделал, как смог )

    Цитата (Jak @ 23.4.2020)
    никто не понимает твои мысли, как мы можем тебе что-то посоветовать?

    да какие мысли-то? Взяли стартер, разложили, добавили 12 карт, разложили фантазию. Получили очки, записали. Взяли другие 12 карт, повторили.
    В итоге какие-то разложения будут набирать больше очков, а какие-то меньше. В итоге всё идёт к тому, чтобы найти ТОП-5 разложений = ровно то, что ты уже сделал, а мне только предстоит повторить.
    Вопрос остаётся. Как для разложения ---/---/ ты получил 12270, а для разложения ---/4--/ - 9315?
    Что суммировал за 10000 прогонов?
    620/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 23.4.2020)
    Как это уникален, если в #1413 посте, ты сам посчитал стартер по "моей" методе.

    Ты не путай мух и котлеты.

    Разложение стартера через фантазию, идея не новая. Я его "решил" просто в лоб. Беру стартер, добавляю к нему 8 карт и нахожу фантазию.
    А вот твой способ
    Цитата (БиллиУбили @ 23.4.2020)
    Поэтому приходится брать элемент из коллекции, брать оттуда разложение, находить "новые" очки, суммировать с предыдущими и записывать новый элемент в новую коллекцию. Потом сокращать в ней кол-во элементов и т.д.

    уникален, и понятен только тебе.

    Не вижу смысла добавлять больше 8 карт.
    1) При 5+8=13 карт, после разложения фанты, мы с 100% вероятностью уверены, что ВСЕ 5 карт стартера попадут в разложение. Предположим, что 5+9=14 карт лучше, т.к. даст больше возможности для улучшения фанты. 14 карт=14 фант (13+1), из которых 5 плохие, т.к. туда попадут карты нашего стартера, т.е. 5 из 14 фант не наши. Смысл их раскладывать? Лучше взять еще 13 других вариантов по 8 карт (5+8) и разложить их. И так по индукции 15 карт = 15*14 фант13.
    2) При кол-ве карт>13, после разложения придется обязательно проверять на наличие ВСЕХ карт стартера! А это время!

    Цитата (БиллиУбили @ 23.4.2020)
    Взяли стартер, разложили, добавили 12 карт, разложили фантазию. Получили очки, записали. Взяли другие 12 карт, повторили.

    Тут вообще весь смысл разложения через фанту теряется.
    Ты фиксируешь карты стартера, и к ним "приклеиваешь" доп карты. Тебе придется это сделать для всех 192 вариантов. И из них потом выбрать лучший вариант.

    Я просто беру 5 карт + 8 новых, раскладываю и запоминаю расположение стартера. И так N раз. Карты стартера сами становятся на лучшие места.
    Идея: большее количество наберет комбинация мест лучшего стартера (но как оказалось это не верно ).

    Цитата (БиллиУбили @ 23.4.2020)
    Как для разложения ---/---/ ты получил 12270, а для разложения ---/4--/ - 9315?
    Что суммировал за 10000 прогонов?

    ХЗ как это получилось, 100к раз к стартеру добавил 8 карт, разложил фанту, посчитал варианты. Видимо 12270 раз бубна не приходила вообще, а 9315 раз бубна была одна.

    Вот еще раз 100к разложений, уже другие циферки, но похоже.

    а вот 1кк раз:

    142/314
    Ответить Цитировать
    2
  • Цитата (Jak @ 23.4.2020)
    Ты фиксируешь карты стартера, и к ним "приклеиваешь" доп карты. Тебе придется это сделать для всех 192 вариантов. И из них потом выбрать лучший вариант.

    Естественно, этим и занимаюсь. Просто не представляю, как можно по-другому.
    621/741
    Ответить Цитировать
    1
  • Цитата (Jak @ 23.4.2020)
    100к раз к стартеру добавил 8 карт, разложил фанту, посчитал варианты. Видимо 12270 раз бубна не приходила вообще, а 9315 раз бубна была одна.

    Вообще не понимаю, о чём ты. Если ты бахнул все 5 карт вниз - какая тебе разница, придёт бубна или нет? У тебя уже 4 очка в кармане(минимум).
    Различие между К в топ или Q в топ (39К vs 31К) тоже вызывает сомнение...вероятность собрать фантазию(КК или QQ) приблизительно одинаковая, откуда такая разница в очках? Только если за КК ты вручную добавляешь Х очков.
    622/741
    Ответить Цитировать
    1
  • Цитата (Jak @ 23.4.2020)
    уникален, и понятен только тебе.

    Увы, мой способ не уникален. Беру 5 карт, это 232 разложения(а не 192, как пишешь ты).
    Для всех разложений генерирую набор из 12 карт и раскладываю фантазию(стартер при этом уже разложен). При разложении нахожу не только очки, но и кол-во вариантов, которыми эти очки набираются. Получаю список(массив?)
    15 очков - 3 варианта
    14 очков - 10 вариантов
    13 очков - 0 вариантов
    12 очков - 1000 вариантов
    и т.д.
    Умножаю одно на другое и суммирую.
    В результате имею 232 числа. ПОтом ещё раз(на других 12 карт). Снова 232 числа.
    Суммирую. После 100 прогонов получаю "ИТОГО"
    Отбрасываю 10 неудачников и повторяю огромный цикл.
    Спрашивай, что непонятно )
    623/741
    Ответить Цитировать
    1
  • Цитата (БиллиУбили @ 23.4.2020)
    Вообще не понимаю, о чём ты. Если ты бахнул все 5 карт вниз - какая тебе разница, придёт бубна или нет? У тебя уже 4 очка в кармане(минимум).

    Ты опять собираешь комбинации

    Я ничего, никуда не кладу!

    Я беру стартер + 8 случайных карт. Получаю 13 карт. И раскладываю из них фанту. Вот куда попадут карты стартера, там им хорошо! Вниз! В мид! Пох!
    Собираю максимальную фанту!
    Запоминаю.
    Они могут попасть все в низ, могут 3 из них в топ.

    Карты стартера САМИ ложатся на лучшие места!
    143/314
    Ответить Цитировать
    0
  • Jak, Вас понял.
    Наши подходы близки, но напрямую их сравнивать нельзя. У тебя нет лишних карт(сброшенных). Всё-таки как-то подозрительно добавлять к стартеру строго 8 карт. Теряется вариативность.
    Это видно по очкам. Тебе выгодно сразу положить флаш, не надеясь на большее. Хотя в реальности(и ты это сам подтверждаешь) надо стремиться набирать больше очков(выходить на фантазию и т.д.)
    624/741
    Ответить Цитировать
    1
  • Как правильно разложить стартер?
    1578430132192671051.png

    Не хватает эксперта по всем вопросам Кулона
    625/741
    Ответить Цитировать
    1
  • БиллиУбили, ты бы потише тут _)
    и картинки под спойлером красиво бы смотрелись _)
    GIc2pMClR5ST6Z9rRSXPtQ.png
    422/882
    Ответить Цитировать
    0
  • Цитата (Jak @ 23.4.2020)
    А тут комментарий такой:
    Часто в рекламе пишут: "Напишите нам: За ЧТО вы любите доширак?".
    Т.е. они сразу предполагают, что мы любим доширак, это вообще не подлежит сомнению! Осталось только выяснить "За ЧТО"?
    А если я не люблю доширак? Как ответить на вопрос?


    "Ты уже перестала пить коньяк по утрам?" - как говаривал классик с пропеллером
    8/9
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 23.4.2020)
    Как правильно разложить стартер?


    Нет критериев <<правильности>>. Но если раскладывать карты от себя, не учитывая как раскладывают карты соперники, то мое мнение, что <<правильные>> стартера те, которые в совокупности со следующими раундами, на дистанции, набирают наибольшее кол-во очков, фантазии и наименьшее кол-во без очковых вариантов. Но проверять необходимо именно так как идет игра в реальном режиме, с вышедшими известными картами, и картами которые вышли из игры, но которые "ему/ей" неизвестны. Если игра идет на троих, обычный ананас, то мое мнение, на сотню игр: фантазия: 28+, очков: 500+, без очковых вариантов: 37-. Чем лучше цифры, тем ближе мы к <<правильному>> стартеру.
    2/35
    Ответить Цитировать
    0
  • Цитата (Luisito99 @ 24.4.2020)
    Нет критериев <<правильности>>

    Есть, скорее всего...просто я до них не добрался. Да и шутка это была. Типа школьники обсуждают )
    Цитата (Luisito99 @ 24.4.2020)
    на сотню игр: фантазия: 28+, очков: 500+, без очковых вариантов: 37-.

    Вы, простите, как эти цифры получаете? Последовательным разложением подьём за подьёмом?
    626/741
    Ответить Цитировать
    1
  • Цитата (БиллиУбили @ 23.4.2020)
    Отбрасываю 10 неудачников и повторяю огромный цикл.

    10 неудачников я не дождусь, сложно(долго) отлаживать.
    Начал отбрасывать 25.
    Рука 3/3/3. 210 вариантов разложения стартера.
    По 100 прогонов между отсчечением аутсайдеров. Отсечка по очкам -3 очка(напомню, всего 9 карт в руке)
    Забавно, как идёт борьба между "лидерами"
    1849 dDT U g
    3421 dDT U g
    5049 dDT U g
    6784 dDT U g
    8380 dDT U g
    9676 dDT gU
    11399 dDT U g
    13330 dDT gU

    Думаю окончательно перейти на руку 5/5/3, сделать финальную отладку и наконец разложить
    стартер
    627/741
    Ответить Цитировать
    1
  • Цитата (БиллиУбили @ 24.4.2020)
    Вы, простите, как эти цифры получаете? Последовательным разложением подьём за подьёмом?


    Допустим есть метод определения стартера(Х) и есть метод расчета следующих раундов(Y). Для того что бы проверить правильность этих методов, нужно эмулировать игру. Если "мы" играем, без учета того, как раскладывают карты другие игроки, то задача упрощается. Устанавливаем позицию за столом, для примера "мы" вторые из трех. И далее:
    Первый раунд: приходят пять рандомных карт (+5 мертвых известных карт, которые достались первому игроку). Скармливаем эти карты методу X, метод считает стартер и лучший вариант мы выбираем для продолжения.
    Второй раунд: приходят три карты (+7 мертвых известных карт - 5 третьему и 2 первому. Плюс 1 карта, которая никогда не выпадет, но о которой "ему" ничего не известно). Скармливаем эти карты методу Y, лучший вариант выбираем для продолжения.
    И так до конца.
    После всех раундов записываем результаты: набранные очки, фантазии и т.д.. Перемешиваем колоду и начинаем заново весь процесс.
    После нескольких сотен игр, проверяем результаты. Если результаты плохие, то можно сделать вывод, что либо метод X, либо метод Y, неправильны для данной позиции за столом.
    3/35
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 24.4.2020)
    окончательно перейти на руку 5/5/3

    ничего хорошего. Как было быстродействие 20фант/с (на 17 картах), так и осталось. Ну, разложил я ~ 7000 фант за 5 мин. Ну, нашёл Топ-3 лучших разложения...но что-то мне это не нравится.
    Подсказывайте, у кого какие идеи есть по ускорению разложения фанты.
    У меня есть следующие.
    1) Улучшенная метода Jak, когда 14 карточная фантазия находится на основании 13карточной. Если есть набор комбинаций(флаш, трипс), который никак не увеличивается, то и больше очков мы никак не наберём.
    2) Один раз найти все комбинации и их ранги. Тогда разложение фантазии сведётся к попытки разложить эти комбинации по старшинству с учётом пересечения(общих карт). Опять же, Jak утверждает, что проверка массивов из Х карт на общий элемент(ы) - потеря времени.
    В принципе, я уже пробовал идти по этому пути, но, как мне сейчас кажется, совершил ошибку - фиксировал комбинацию внизу и для каждой пытался найти все комбинации без этих 5 карт. То есть, по сути делал тот же самый полный перебор.

    Что ж, опять придётся идти от простого к сложному: раскладывать "фантазию" из 5 карт, потом 10, 11 и т.д.
    628/741
    Ответить Цитировать
    2
  • 3.5 дня пришлось разбираться, как же всё-таки устроено это дерево. Точнее реализовано.
    А реализовано оно по-дурацки. Правильно говорят, не используйте чужой код, ЕСЛИ планируете вносить поправки.
    Предполагается сделать что.
    1. Отсортировать полное дерево по силе комбинаций (Jak, в 10ый раз спрашиваю, позволяет ли это сделать массив?)
    2. Получить дерево для 17 карт путём удаления ненужных карт из полного дерева.
    3 Мы получаем дерево с уже отсортированными по силе комбинациями.
    ??
    4. Разложить фантазию при таких раскладах...ну, это сам бог велел.

    Пока я сделал лишь удаление ненужных карт из дерева. Надо потестить быстродействие + придумать, как лучше хранить комбинации(и, возможно, их силу).
    Понятно, для чего это всё затевается. Если мы положили в середину комбинацию силы ХХХ, то мы сразу можем найти получить из дерева комбинации, которые мы можем положить вниз(и, соответственно, наоборот. Здесь снова спрошу Jak, можешь ли ты мгновенно получить из массива комбинации старше фулхауса, например?

    ЗЫ Поправьте, в чём я не прав )
    ЗЫ2 Ставьте плюс, расскажу анекдот про Кулона
    629/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 27.4.2020)
    Надо потестить быстродействие

    ну, тут я не сомневался. Мгновенное удаление "ненужных" карт из дерева.
    А вот с сортировкой пока затык. Это должно быть очень просто. Хранить комбинации, которое "даёт" дерево, отсортировать их и получать набор комбинаций(вместе с картами) старше определённой(уже без запроса в дерево).
    Пойдём обычным путём...маленькое дерево...мало комбинаций...
    630/741
    Ответить Цитировать
    0
  • Цитата (Jak @ 23.4.2020)
    Лучше взять еще 13 других вариантов по 8 карт (5+8) и разложить их. И так по индукции 15 карт = 15*14 фант13.

    Немного не понял твой алгоритм. Если фантазия на 15 картах это 15*14 фантазий на 13 картах...то зачем ты считаешь очки за отдельные 13карт фантазии?
    Какие-то дадут 7 очков, какие-то 0. По итогу в зачёт должна пойти лучшая из 15*14, так?
    631/741
    Ответить Цитировать
    0
  • Господа, помогите разобраться, в чём я не прав. А то Jak меня совсем заклевал.
    Итак, планирую для дерева создать элемент
    static
    , где хранить все комбинации(вместе с рангами), входящие в дерево. Предположим, он отсортирован.
    Имеется задача: добыть из дерева комбинации старше флаша.
    Jak утверждает, что достаточно перебрать все комбинации ,которые можно собрать из 17 карт, и в процессе перебора найти(собрать) нужные.
    Я же утверждаю, что у меня это займёт O(log N) операций, где N - число комбинаций.
    В чём я не прав?
    632/741
    Ответить Цитировать
    0
2261 пост
1 51 71 72 73 74 93 114
1 человек читает эту тему (1 гость):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.