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

Последний пост:26.11.2023
22
1 30 50 51 52 53 72 114
  • Цитата (c00l0ne @ 28.1.2020)
    само собой известна, я лично ее полным перебором считал ... 2 дня )

    странно, при разговоре ты говорил, что это очень сложно ))
    Приведи тогда значения для 17, 18 и 19 очков. Сравним со значениями Жака

    Цитата (c00l0ne @ 28.1.2020)
    если не секрет )

    мне это не интересно. Эффективность кода(алгоритма) кол-вом строчек не определяется.
    407/741
    Ответить Цитировать
    0
  • Цитата
    Приведи тогда значения для 17, 18 и 19 очков. Сравним со значениями Жака

    неее , спасибо, за 100$ могу )

    Цитата (БиллиУбили @ 28.1.2020)
    Цитата (c00l0ne @ 28.1.2020)
    само собой известна, я лично ее полным перебором считал ... 2 дня )странно, при разговоре ты говорил, что это очень сложно ))
    П


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

    Цитата
    мне это не интересно. Эффективность кода(алгоритма) кол-вом строчек не определяется.

    лол , я твои перлы потом на хабр или башорг выкладу )
    видимо много строчек потому что широкая манера письма )

    алгоритм должен быть фундаментальным ... остальное оптимизация ...
    Сообщение отредактировал c00l0ne - 29.1.2020, 4:12
    282/882
    Ответить Цитировать
    0
  • Цитата (c00l0ne @ 28.1.2020)
    ну тупой полный переебор

    Цитата (c00l0ne @ 28.1.2020)
    алгоритм должен быть фундаментальным

    полный перебор - такой себе алгоритм. 7часов vs 20 минут
    Калифорнийские сервера заждались договора аренды
    Цитата (c00l0ne @ 28.1.2020)
    что решать игру против фантазии очень сложно

    ну, да. очень сложно. К тебе пришли 5 карт, выкинь их из колоды и ЕВ фантазии соперника изменится. Делай так каждый подьём, и где-то на последнем поймёшь, что тебе пришёл весь мусор, а все АА и КК заботливо сложены оппом в фантазию.

    Цитата (c00l0ne @ 28.1.2020)
    лол , я твои перлы потом на хабр или башорг выкладу )

    это не перл, а правда жизни. Алгоритм на 100 строчках может быть как быстрее, так и медленнее алгоритма на 200.

    2 All 1000+ сообщений в топике. Всех поздравляю! Сейчас докрутим завершение стартера, потом нагрузка дерева...Всё только начинается )
    408/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 29.1.2020)
    Сейчас докрутим завершение стартера

    Сделано.
    По уже доброй(?) традиции система разбработки во время отладки крашнулась. Но не фатально, проект уцелел. Делайте бэкапы, господа!

    Идея такая же, как и с попаданием ровно 5 карт стартера в итоговое разложение 14-17 карт. На этот раз получилось даже хитрее. Если у нас внизу должны оказаться , а это 2 карты, то при поисках комбинаций для нижнего бокса, мы начинаем рекурсию с поиска их в наборе. Находим , обязательно кладём вниз, УДАЛЯЕМ из набора и дальше ищем ...находим , кладём вниз, УДАЛЯЕМ из набора...вуаля, мы свели задачу к уже решённой: теперь следующие карты из набора(уже без семёрок) могут либо попасть вниз, либо не попасть.
    Ну, а дальше с меньшим набором переходим ко второму витку рекурсии(заполнению среднего бокса с обязательными 0-3 картами из набора, в зависимости от выбранного нами разложения стартера).

    Далее планирую перейти к нагрузке дерева. Как лучше задавать комбинацию?
    Пока есть такая задумка: первые 2 байта - число от 0 до 16 = ранг комбинации(стрит, флаш, каре и т.д.)
    следующие 5 байт - отсортированные по старшинству "карты". Сейчас у меня это числовые коды ASCIIтаблицы
    https://ru.wikipedia.org/wiki/ASCII, то бишь буквы латинского алфавита от а до z и от А до Z.
    Флаш будет примерно соответствовать #8 PSTWX(что-то вроде этого)
    Предлагаю сортировку, так как придётся сравнивать флаши/стриты на старшинство. (дерево живёт своей жизнью, время на сортировку мы тратить не будем)
    Какие будут предложения?

    ЗЫ Скоро на работу... Вы можете поддержать проект донатом(добровольным пожертвованием)

    PSS Музыкальная пауза!
    409/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 29.1.2020)
    Далее планирую перейти к нагрузке дерева.

    Лол, кек-чебурек. Дерево, конечно, хорошо, но массив-то лучше?
    Ведь как я сейчас ищу, например, слово ТИГР.
    На 1ом этапе последовательно(!) прохожу все ответвления от А до Т -> спускаюсь на уровень вниз -> прохожу все ответвления от А до И -> спускаюсь на уровень вниз-> прохожу все ответвления от А до Г-> спускаюсь на уровень вниз и т.д.
    Так а зачем мне тратить время и узнавать есть ли ответвления (и проходить их) от А до Т, если я могу сразу перейти к ответвлению "Т"? Видимо, это имеет смысл для словаря, где не все префиксы приводят к словам. Например "ЫКР, " споткнётся уже на Ы и выйдет из цикла(в предположении, что СЛОВ, начинающихся на Ы, нет)
    Но в мире покерных комбинации всё не так. Даже самая дурная комбинация(например, ) имеет смысл.
    А, значит, надо либо модифицировать дерево, либо переходить к массиву.
    Программисты есть в треде? Как сделать так, чтобы сразу прыгать к "Т", спускаться на уровень ниже и сразу прыгать к "И"?
    Получается, можно на каждом уровне сделать (под)массив из 52 ячеек, каждая из которых хранит ссылку на подмассив уровня ниже. А самый нижний подмассив уже содержит значение комбинации(флаш, стрит и т.д.)
    Забавно, забавно.
    ЗЫ Есть и хорошие новости. При модификации дерева алгоритмы критических изменений не претерпят. Наоборот, станут ещё быстрее. Только выиграли!
    410/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 30.1.2020)
    Получается, можно на каждом уровне сделать (под)массив из 52 ячеек, каждая из которых хранит ссылку на подмассив уровня ниже. А самый нижний подмассив уже содержит значение комбинации(флаш, стрит и т.д.)

    такими темпами, ты и массив изобретешь (которым я пользуюсь)

    теперь осталось придумать, чтобы все ветви дерева ссылались на один массив с комбинациями. те все перестановки веток приводили в одно место, для экономии места.
    104/314
    Ответить Цитировать
    0
  • Цитата (Jak @ 30.1.2020)
    теперь осталось придумать, чтобы все ветви дерева ссылались на один массив с комбинациями. те все перестановки веток приводили в одно место, для экономии места.

    Придётся придумать, куда же без экономии места ))
    ЗЫ Слава богу, я значительно продвинулся в разложении фантазий, так что запуск пилота не за горами
    411/741
    Ответить Цитировать
    0
  • Ну, не факт, что ты именно фантазии раскладываешь. Мне кажется, ты просто находишь первую лучшую комбинацию на три линии и радостно выходишь из цикла с криком: Нашел!!!
    А то, что возможны лучшие варианты, ты это игнорируешь. И не ищешь их.
    105/314
    Ответить Цитировать
    0
  • Цитата (Jak @ 30.1.2020)
    просто находишь первую лучшую комбинацию на три линии

    нет, это не так. я нахожу все комбинации из 3ёх линий(с разной суммой очков)
    412/741
    Ответить Цитировать
    0
  • Вспомнился тут один анекдот...
    Встречаются в коридоре Минфина два высоких чиновника и один другому говорит:
    - Слушай, Кузьмич, спасай. Спать спокойно не могу, совесть замучила - ну, не понимаю я наших налоговых реформ.
    - Да не расстраивайся ты из-за такой ерунды. Пойдем ко мне в кабинет, чаю выпьем, я тебе все объясню.
    - Да объяснить-то я и сам могу. Я понять хочу.

    Пока не могу придумать, как этот волшебный массив организовать. Точнее, задумка есть...52*52 должно превратиться в 52*52/2(от перестановки ничего не меняется). 52*52*52 -> 52*52*52/6 и т.д.
    413/741
    Ответить Цитировать
    0
  • Jak, подскажи, пожалуйста...а в твоей формуле
    HR5[ HR5[ HR5[ HR5[ HR5[53+c1]+c2]+c3]+c4]+c5]
    там Сi случайно не отсортированы? Или может ты перед запросом сравниваешь с1 и с2, например? Тогда эта формула имела хоть какой-то смысл.
    В общем, я пока думаю модифицировать дерево...там мне всё ясно и понятно ))

    ЗЫ Побежал на работу. До воскресенья, всех обнял.
    414/741
    Ответить Цитировать
    0
  • БиллиУбили, нет. ничего там не отсортировано
    это красивое сворачивание полного дерева в массив
    когда в мозгу "щёлкнет" как это работает, это станет просто
    на 16(у меня) странице жак это разжёвывает. возьми например 6 карт(и 2 масти) и попробуй расписать для руки из 3карт
    Сообщение отредактировал Yras - 30.1.2020, 23:40
    1/6
    Ответить Цитировать
    0
  • Yras, да он не умеет старые посты читать. по сто раз одно и тоже спрашивает, а ответы читать забывает.
    106/314
    Ответить Цитировать
    0
  • Цитата (Jak @ 31.1.2020)
    Yras, да он не умеет старые посты читать. по сто раз одно и тоже спрашивает, а ответы читать забывает.


    Тебе сложно объяснить как это работает?) мозг выносите уже целый год Билли) придется мне... Посмотрел я на этот массив ровно 1 минуту... Классическое хранение графа с помощью одномерного массива ( о как гениально)
    Работает Билли оно так: в первых 52 элементах хранятся смещения, для первых карт Комбинаций, а не то что ты думаешь, а ты думаешь что там хранятся номиналы карт) видимо никогда файловые системы на низком уровне не изучал, там тоже есть таблицы со смещениями и адресами, чтобы найти куски файлов на диске прыгая от одного к другому...

    Поэтому в таком массиве 2+3 не будет равно 1+4 потому что в ячейке 2 и 3 хранятся смещения отличные от ячеек 1и 4 ... И сумма смещений из ячейки 2 и 3 не будет равна сумме ячеек из ячеек 1и 4 , то же самое и для всех 5ти карт... В начале массива хранятся смещения а в конце значения комбинаций, вот мы и четырьмя операциями суммируем смещения , чтобы найти адрес по которому храниться значение ...
    Есть более красивый метод хранения графа но я вам не расскажу) потом как нибудь... Этот осваивай...
    Сообщение отредактировал c00l0ne - 31.1.2020, 9:15
    283/882
    Ответить Цитировать
    -2
  • Цитата (Jak @ 3.6.2019)
    А тут при первом обращении HR5[53+c1] (оно внутри формулы), мы получим не ответ, а ссылку на адрес внутри массива. К этому адресу добавляем смещение с2 (HR5[53+c1]+c2) и берем следующий адрес в этом же массиве HR5[ HR5[53+c1]+c2] и так далее. Массив устроен таким образом, что если мы поменяем местами с1,с2,с3,с4,с5 и будем брать с2,с5,с1,с4,с3 - все равно ответ будет таким-же. Все эти ссылки попадут в одно место. Первые ЧЕТЫРЕ обращения к массиву дают не ответ, а ссылку на продолжение и ТОЛЬКО ПЯТЫЙ запрос даст ответ!


    А теперь перечитай это и думаю не составит труда сделать такой массив тебе, у Жака правда тараканы те ещё в голове, он думает что мы получаем адрес)
    На самом деле получаем смещение... Нам дают заданную улицу... Говорят что третий дом слева,а в этом доме , пятая доска на заборе, на доске второй листок , на листке в тринадцатой строке записан код комбинации

    Пятимерное пространство вытянутое в одну плоскость...
    Сообщение отредактировал c00l0ne - 31.1.2020, 9:35
    284/882
    Ответить Цитировать
    -2
  • Жак минусует) сейчас плюсовать начнет)

    Продолжение лекции
    Теперь выворачиваем полученный граф, представь что мы список составили из всех комбинаций, а так же составим список всех улиц домов досок и листочков, в начале расположим список улиц , потом домов, потом, досок потом листков, а карточной аналогии это будет пять колод и мы будем брать номера колод и номера карт в этих колодах... Вложенных в друг друга... Но самое простое что надо понять , то что колоды у нас одинаковые, как и то что адреса улица дом доска листок строка некоторые ведут к одной и той же строке в списке комб... Т.к. набор их ограничен... А адресов гораздо больше этого набора... Продолжение следует...
    Сообщение отредактировал c00l0ne - 31.1.2020, 11:19
    285/882
    Ответить Цитировать
    0
  • чет много минусов ну тогда разбирать построение массива HR не будем) им нравится просто быть юзерами - заюзал и забыл
    286/882
    Ответить Цитировать
    0
  • Сначала я написал как устроен массив, начало #307, #309, #312, все разжевал с примерами - обсмеяли. Я предложил забыть.
    Потом Galax - начал тут #315, #317, потом он супер! объяснил устройство массива: #482. Прям для малышевой группы детсада, на пальцах!

    Цитата (c00l0ne @ 31.1.2020)
    тогда разбирать построение массива HR не будем

    Что тут еще разбирать?
    Цитата (c00l0ne @ 31.1.2020)
    у Жака правда тараканы те ещё в голове, он думает что мы получаем адрес)
    На самом деле получаем смещение...

    а вот мое сообщение:
    Цитата
    мы получим не ответ, а ссылку на адрес внутри массива. К этому адресу добавляем смещение с2 ...

    не один ли хер: ссылка, адрес, смещение - пох как назвать это число. Это промежуточное число, не результат.

    А тараканы-то у тебя. Тоже не мог сразу понять как устроен массив. Наверно так, нет наверно так...

    Только пиздеть мастер.

    Вот я скоро сделаю!!! Да времени нет.
    Да у меня есть солвер!!! Вот скоро выложу! за 10$
    Дайте недельку на примеры!!! Скоро сделаю!
    Могу дать инфу!!! За 100$!
    В своем блоге вообще всех задрочил. Если кто не угадает как ты сходил - все!! Все задачки не на то, как ПРАВИЛЬНО сходить исходя из вероятностей, а то как ТЫ сходил.
    и т.д.

    Видимо сложности с баблом, всяко пытаешься заработать.
    107/314
    Ответить Цитировать
    1
  • c00l0ne,
    Цитата
    у Жака правда тараканы те ещё в голове, он думает что мы получаем адрес)
    На самом деле получаем смещение...

    Этой фразой ты демонстрируешь во-первых, свою манеру общения (наверное не зря у тебя такой рейтинг?), а во-вторых уровень своей компетенции в данном вопросе.
    Не надо по третьему кругу заводить пластинку про эти массивы. В течении года и я и Jak по несколько раз разжевывали все как могли, я даже приводил аналогию с настольной игрой с кубиками. Но для Билли это все не нужно. Он твердо решил, что будет делать все по-своему, лучше, быстрее, точнее. Поэтому не сбивайте его с выбранного пути. Никаких массивов, только хардкор, только строки и расстояние Дамерау — Левенштейна и все такое...
    Билли доделай уже свои задумки до конца и утри всем носа.

    P.S. Пока писал, Jak написал почти тоже самое.
    38/52
    Ответить Цитировать
    1
  • Блин, даже не знаю...нет времени обьяснять, отвечать каждому в подробностях.
    Во-первых, почему кто-то решил, что волшебный массив HR5 - ключ ко всем проблемам и, вообще, лучше сделать нельзя. А если кто-то им не пользуется, то он редиска и нехороший человек...
    теперь смотрим знаменитый пост #482 от Galax
    Цитата (Galax @ 11.12.2019)
    Благодаря этому удается сжать пятимерный массив невероятных размеров [52, 52, 52, 52, 52] до вполне разумного по размерам одномерного массива.

    Вы меня простите, но человек НЕ понимает, что пишет. Нет никакого сжатия до разумного размера!
    Многомерный массив сжимается всего лишь ровно в 5! = 120 раз, за счёт того что он ВРУЧНУЮ трактует комбинации, одинаковые до перестановки, как одну.
    Всё! Больше никакого секрета в нём нет.
    Просто я РАНЕЕ предполагал, что хоть массив состоит из ссылок, но строят их на основе какого-то хитрого приведения ВСЕХ возможных перестановок в комбинации к какому-то одному. Этого в массиве нет. Там просто в конце приписывается комбинация. Что, кстати, не исключает ошибок при его заполнении.
    В этом смысле c00l0ne отчасти прав: массив удобен для работы для программиста среднего уровня(никакого не хочу обидеть или в чём-то обвинить).
    Почему я решил вернуться к массиву, когда практически всё написал "на дереве"?
    Да просто дерево у меня пока не нагружено. И вместо обязательной проверки 52 ответвлений, я перескакивал по существующим ответвлениям(около 5). Также по этой причине во всех алгоритмах я делал поиск по все существующим ответвлениям, а не сразу прыгал на нужное ответвление.
    (например, ищу ТИГР. Нахожу Т, спускаюсь на уровень ниже...начинаю искать И...этого можно и не делать, а сразу переходить к ответвлению "И", которое будет А...И - 10ым по счёту).
    Вы скажите: обратиться к 50му элементу массива быстрее, чем 50раз прыгать с начала дерева.
    Но я провёл эксперимент и выяснил, что 50 рандомных перескоков по ячейкам памяти по времени практически равносильно перескоку к ячейки памяти с адресом = адрес +50.
    К тому же, мы не знаем, как на самом деле хранится огромный массив в памяти. Сомневаюсь, что это 1кк ячеек подряд. Возможно, это 200кк в одной области, 200кк ещё где-то и 600кк ещё где-то. То есть перескоки будут и в случае обращения к массиву.
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    На этом холиварные войны прощу закончить.
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    Чуть попозже выложу основные параметры моей прожки. Точнее, для версии 1.0
    Там всё будет на "деревьях". Вот доведём её до конца, и, если будет тормозить, буду переписывать на "массивах".
    415/741
    Ответить Цитировать
    0
1 30 50 51 52 53 72 114
1 человек читает эту тему (1 гость):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.