Jak @ 02.12.22Самое сложное посчитать первый подъем.
2-й, 3-й и 4-й считаются и так быстро.
Какой смысл держать в памяти все конечные состояния?
Кому за 300$ нужно посл раздачу считать? Что там сложного 2 карты из 3-х положить?
Ну с учётом лайнов оппонентов
Если абсолютно точно считает , я бы купил
Ну всем кто играет интересно , свои раздачки проверить , туда сюда покрутить ...
Jak @ 02.12.22Какой смысл держать в памяти все конечные состояния?
Их не нужно держать, как только посчитали предыдущий ход , можно удалять из памяти и переходить на шаг назад
c00l0ne @ 02.12.22Что там сложного 2 карты из 3-х положить?
Ой ты наверное думаешь про посл самый дроп карт, а я про предпоследний...
На самом деле это базовый солвер в китайском, странно что ещё никто не выпустил.
Что из него извлекает игрок? опыт бесценный, расчётов. Который можно интерпретировать на более ранние улицы... Включая стартер.
Например
AA
223
4567
Будет похожа на раздачу
AAK
2235
4567
Да вероятности другие маленько закрыться, но принципиально ничем не отличаются
И посчитать это не сложно , а вот ход назад посчитать , уже проц не вывезет
С учётом оппонента повторюсь
Без учёта оппонента это все считается быстро ... Но такие расчёты я бы забраковал ... Как упрощенные и приближенные, не понятно в какую сторону имеющие отклонения и не понятно на сколько кушей
Если раки на горе свистнут то я сделаю китайскому сообществу подарок в виде таких двух солверов: для ха и для три макса.
Возможно к новому году... Первый 300$, второй 500$ норм стоимость .
Хочу выложить в общий доступ то, что написал.
С одной стороны это поможет новичкам (и не только им) в постижении ананаса, с другой стороны это усилит общее поле.
Кратко, что там есть:
- Есть оценка текущего положения карт. Т.е. кладем известные карты себе и оппам и прога считает бонусы (оценку) данной позиции. Тут можно оценить разные стартеры и просто позицию в любом состоянии. Два варианта расчетов, быстро (8 потоков, у меня занимает 80% мощности процессора) и быстрее (91 поток, тут процессор занят на 100%). При расчетах считаются все варианты низа, флеши в том числе. Для мида флеши не учитываются специально
- Расчет стартера. Кладем 5 карт себе в низ, и прога перебирает все варианты стартеров и дает оценку каждому варианту. В окне текстов показывается номер варианта, расклад и оценка. Два варианта расчетов, быстро и очень приблизительно (вариант Монте-Карло, играем несколько игр с разными стартерами и считаем бонусы, тут оценка не точная, она просто дает расположение разных стартеров, какой лучше и хуже) и медленно (91 поток, тут процессор занят на 100% и оценка каждого стартера точная).
- Расчет подъема (без учета оппов). Тут кладем известные карты себе и оппам и три карты, которые нам пришли. И прога сама пытается их положить всеми возможными вариантами и дает оценку нашей позиции. Если это первый подъем (у нас только пять карт + 3 новых), медленно, но точно. Есть вариант посчитать быстро и примерно. Если это второй и дальше подъем, то всегда быстро полным перебором, независимо от кол-ва известных карт.
- Расчет фанты 14, 15, 16, 17 карт. Тут с учетом карт оппов. Прога выберет наилучший вариант с учетом линий оппов. Пока хочу выложить вариант только с 16, 17 картами, чтобы нельзя было использовать прогу онлайн для 14 и 15 карт.
Это почти кальк, только вводить карты надо ручками и ввод карт не такой быстрый, так что пользоваться им во время игры немного муторно.
Интересует вопрос: не испортит ли это игру? слишком сильный инструмент попадает в паблик.
Сначала сделал усеченный вариант, который считает не все позиции и стартеры, а только те, в которых обязательно есть например . Этот вариант ограничит кол-во стартеров. А потом подумал, а какая разница? Пусть считает все варианты.
Жду отклика сообщества.
Можно просто +/-. + выкладывай, - ни в коем случае. Можно расписать аргументы за + и -.
Всех с Новым годом!
Jak, люди не обучаемые свиньи (с)
Wall-e0605 @ 31.12.22Интересует вопрос: не испортит ли это игру? слишком сильный инструмент попадает в паблик.
если будешь выкладывать не забудь добавить 20 сек на любой расчет тайминг, иначе я против, а за такой подсказчик в реальном времени тебе бумерангом прилетит от регов )
пс любой клоун сядет и будет вводить карты и катать как средний +- рег
Jak @ 31.12.22Два варианта расчетов, быстро (8 потоков, у меня занимает 80% мощности процессора) и быстрее (91 поток, тут процессор занят на 100%).
Мне кажется, что так жестоко задавать кол-во потоков нельзя. Есть функции , которые возвращают оптимальное кол-во потоков для определенного процессора. Да и тут могут быть проблемы. На процессорах Intel, может быть и не будет разницы сколько потоков 4 или 100 - это никак не повлияет на производительность, а на процессорах AMD, могут быть проблемы. Может быть ситуации, что чем больше потоков, тем медленнее будет считать. А так хотелось бы понимать на что способна программа. Но лучше, запустить симуляцию игры и посмотреть на каких показателях она играет на 100 игр: очки/100 игр, фанта/100 игр и т.д., например в ситуации, когда мы 2 из 3 игроков. Возможно, что результаты будут низкими и тогда эта программа не помощник, а плохой учитель.
Luisito99 @ 07.01.23на процессорах AMD, могут быть проблемы
Это все стереотипы
Амд уже давно топчек , обошли intel и по твоей логике у Интел проблемы) кек
Но проблемы эти давно решены уже и задай ты сто потоков(если Рамы хватит) или потоков столько сколько ядер, то производительность +- будет одна и та же
Luisito99 @ 07.01.23очки/100 игр, фанта/100 игр и т.д
Что это за показатели, типо аналог с холдемом бб на сто ... В Китае куш/раздачу считают , фанту уже выкладывали- считали сколько кушей, в гугле можно найти
Luisito99 @ 07.01.23очки/100 игр
А симулировать игру не возможно , стартера не посчитаны , оппонента игра не посчитана...
Чтобы коснуться стартеров нужна вот такая машина 96 ядреная
Лям стоит
Делал приложение для телефона. Была важна производительность. Были два устройства для проверки с процессором от intel (4 ядерный планшет от asus) и 8 ядерный процессор snapdragon 810. В коде использовал функцию, которая возвращала оптимальное количество потоков для устройства на котором запускалось приложение. Соответственно для intel вернула значение - 4, а для snapdragon - 8. Но по факту, для процессора intel разницы между 4 потоками и 154 не было, производительность была +- одинаковая. А для snapdragon оказалось все не так. У 8 потоков производительность была намного ниже, чем для 4. Поэтому могут быть нюансы. И мне не понятно, почему именно 8 и 91 поток, а не 12 и 154. А на счёт очков. На мой взгляд это проверка правильности расчетов. Как можно быть уверенным, что алгоритм без ошибки, если программа не играла? Если она на дистанции будет набирать 550+ очков/100 игр, то это хорошая программа, хороший учитель. А если она стабильно набирает 400 очков/100 игр, то это плохая программа и публиковать ее - на мой взгляд - не стоит. Ты говоришь, что у тебя есть точные расчеты некоторых стартеров. А кто тебе сказал, что они правильные? Господь бог спустился на землю и шепнул тебе на ухо? Или человек, который рассчитал эти стартера, разве он не мог допустить ошибку в расчетах?
Luisito99 @ 07.01.23алгоритм без ошибки
Математика алгоритма гарантирует его абсолютную точность
Это алгоритм в котором нет ошибки и приближений, это алгоритм с упрощением...
Он немного для другой игры, но оч похожей на исследуюмую...
Luisito99 @ 07.01.23Если она на дистанции будет набирать 550+ очков/100 игр, то это хорошая программа, хороший учитель.
Откуда эти цифры?
Luisito99 @ 07.01.23Господь бог спустился на землю и шепнул тебе на ухо
Сотни душ монахов ...
Luisito99 @ 07.01.23человек, который рассчитал эти стартера, разве он не мог допустить ошибку в расчетах
Маловероятно, он олимпиадник
550 очков/100 игр - я взял наобум. Я думаю эти цифры на дистанции для человека трудно достижимы, поэтому это гарантия хорошей программы( на самом деле цифры будут ниже). Я же здесь неоднократно писал, что я то же когда то пытался сделать программу для китайского покера, по типу той, что делает Jak. Но я ее не доделал. Но при этом показатели в 500 очков/100 игр(для позиции 2 из 3) у нее были. Но у меня был неправильный алгоритм выбора оптимально варианта продолжения. И я до сих пор, - а сейчас нет ни желания ни времени - ее не доделал.
Luisito99 @ 07.01.23И мне не понятно, почему именно 8 и 91 поток, а не 12 и 154
Ну, это легко объяснить.
В расчетах есть два вложенных цикла.
for ii:=0 to 12 и for jj:=ii to 12. Т.е. перебираем все возможные пары карт. Заметьте, что второй цикл начинается с (ii). Т.о. перебираем пары карт 0,0 0,1 0,2 0,3 и тд до 12,12 (это тузы). всего таких возможных пар 91.
Если расчеты в один поток, то эти два цикла целиком работают. Самый медленный способ. Далее. Цикл при ii:=0 длинней цикла при ii:=1,2... т.к. второй цикл при 0 самый длинный. Я померил время при всех (ii). Вначале сделал 13 потоков и первый цикл разбился до одного элемента, а второй цикл полный. Тогда получился перекос, 0-вой цикл самый долгий, а другие уже закончились. Перебором подобрал, что при 8 потоках получается 8 примерно одинаковых по времени потоков.
Если организовать их так [0],[1],[2],[3,12],[4,11],[5,10],[6,9],[7,8]. У меня 6 ядер, 8 потоков занимают примерно 80% проца.
А 91 - это просто оба цикла раскрыл до 91 пары от 0,0 до 12,12.
По поводу кол-ва потоков. Изучал этот вопрос уже давно. Да, есть функция, которая определяет оптимальное кол-во потоков для конкретного процессора. Но было лень заморачиваться насчет скорости, т.к. нет особой разницы 50 сек считается или 55 сек. Запускаю 91 поток и проц сам решает какой поток вперед.
Сейчас попробую оптимизировать кол-во потоков, чтобы можно было устанавливать кол-во потоков ручками. Ну или можно автоматом запускать по очереди N потоков по заполнению проца.
По времени циферки такие: 91 поток - 92 сек, 8 потоков - 114 сек, 1 поток - 621 сек. Значения совпадают.
Вот такую посчитать против фанты ведь можно абсолютно точно с учётом фантазий оппонента:
Ананас классика
c00l0ne @ 07.01.23с учётом фантазий оппонента
вот это непонятно
а просто максимально хорошо разложить, неверно?
вот тут перебрали все возможные подъемы. посчитали полученные бонусы и усреднили их.
те если положить 99 вниз, в среднем получим 7,01 куша. И это с учетом того, что если купим фанту, получим за нее 9.75
а если бонус за фанту не считать, то получим 5,122 за 99 вниз
и совершенно неважно, будет у фанты внизу фулл или 2пары. гаданием не занимаюсь.
если ты что-то предполагаешь про фанту оппа, скажи проге. я не знаю, что сказать. типа, "скорее всего там 2пары в середине..." не катит.
вот когда карты оппов видны, то фанту раскладываю с учетом бонусов и линий.
Ты считаешь, что если мы из колоды выкинем 8 известных карт, что-то поменяется в фанте?
Все варианты мы все равно не сможем посчитать, ~115млрд вариантов. Вообще-то можно посчитать все варианты. Если считать 1млн фант/сек, за пару дней можно все перебрать.
А перебрать из этого 0,00001%??? Какой смысл?
Это капля в море. И при такой выборке делать предположения о фанте?
по аналогии с техасом, это примерно как мы при сравнении наших А7о с диапазоном оппа, взяли только один флоп, и на основании этого делаем выводы.
Самое сложное посчитать первый подъем.
2-й, 3-й и 4-й считаются и так быстро.
Какой смысл держать в памяти все конечные состояния?
Кому за 300$ нужно посл раздачу считать? Что там сложного 2 карты из 3-х положить?