Re: Программисты помогите ID:10381 ответ на 10276 |
Вс, 13 ноября 2005 09:06 («] [#] [») |
|
|
Привет Korovin. Спасибо нашел микроошибку.
Пришло: 5ч,10ч,Вб,Кк,Tв против 6ч.
Предложил:
Играть МО= -1,048963 верно (верно)
Сдаться МО= -1,000000 верно (верно)
Купить шестую МО= -0,701079 (-0,6950) (-0,694930)
Покупаем шестую (теряем 1 АНТЕ долее не где не отражается), пришла 9к.
получили 5ч,9к,10ч,Вб,Кк,Tв против 6ч.
Предложил:
Играть МО=-1,056820 верно (верно)
Сдаться МО=-1,000000 верно (верно)
Замена карты 5ч МО= -0,703711 (-0,7000) (-0,699922)
Замена карты 9к МО= -0,808083 не знаю (-0,804215)
Замена карты 10ч МО= -1,355116 не знаю (-1,351194)
Замена карты Вб МО= -1,361140 не знаю (-1,356936)
Замена карты Кк МО= -1,379597 не знаю (-1,373679)
Замена карты Тв МО= -0,844030 не знаю (-0,839698)
Меняем карту 5ч (теряем 1 АНТЕ долее не где не отражается) на Вв.
получили 9к,10ч,Вб,Вв,Кк,Tв против 6ч.
Предложил:
Играть МО= 1,177059 (1,1824) (1,182363)
Сдаться МО= -1,000000 верно (верно)
Помните в фильме “Матрица” жизнь представлялась на экране компьютера как набор каких-то падающих цифр. У меня в голове колода карт давно уже массив 13х4. Хотел написать, что пришло: 5-1,10-1,11-0,13-3,14-2 против 6-1. Да побоялся, что не поймете. На 2 этапе, я так понял, вы откидываете определенные варианты по определенной логике. А при игре на 6 боксе как такая логика будет работать. Любопытно сколько у вас времени считается, у меня секунд 5…10 (не помню точно) при первом (случайном) прогоне, при последующем трудно оценить (вбиваешь карты вручную).
|
|
|
Re: Программисты помогите ID:10382 ответ на 10276 |
Вс, 13 ноября 2005 09:42 («] [#] [») |
|
|
2Korovin, //У меня в качестве слабого звена вылезла функция определения комбинации на руке, ее время сопоставимо со временем анализ игры дилера. //
А зачем ее вычислять/определять?
Я сразу сделал массив из 2598960 4-байтных слов по всем пятеркам карт. Отсортировал все пятерки по возрастанию силы. Каждой пятерке соответствует ее номер, который вычисляется однозначно. В массиве 2 байта - сила комбинации, 1 байт старший - номер комбинации от 0-пустышка, до 10 - рояль, даже 1 байт пропадает, вообще можно все засунуть в 2 байта. 5 мегов будет файло. Засасываю его вначале в прогу. И сравнение двух пятерок == простому сравнению двух чисел в массиве, какое больше => тот и победил.
У меня без всяких премудростей/оптимизаций обсчет 10млн комбинаций около 5,8 сек. Для сравнения Ваша прога на 10 млн. дает 9 сек.
|
|
|
Re: Программисты помогите ID:10383 ответ на 10276 |
Вс, 13 ноября 2005 10:12 («] [#] [») |
|
|
2Fabrica. Привет. Массив рук хорошая мысль. Надеюсь, вы это не запатентовали, и я втихаря займусь плагиатом. Но не врубаюсь, как их запаковать в 5 метров. Получается сил комбинаций (у меня менее удачные 15 рангов) меньше 65536/10=6553 для любой комбинации. Еще не понял, как любую руку преобразовать в индекс 0…2598960. Наверное, начну делать – дойдет. Насколько сложные правила вы считаете. Если не сложно выдайте пример расчета руки типа моего.
|
|
|
Re: Программисты помогите ID:10384 ответ на 10276 |
Вс, 13 ноября 2005 10:19 («] [#] [») |
|
|
P.S. Забыл добавить, что у меня 3 функции, выдающие комбинацию: на 5 картах, на 6 картах, и на 5 картах с джокером. Причем с джокером сложнее всего преобразовать в массив т.к. там куча условных операторов, отвечающих за правило куда джокер подходит, а куда нет.
|
|
|
Re: Программисты помогите ID:10385 ответ на 10276 |
Вс, 13 ноября 2005 10:24 («] [#] [») |
|
|
2Fabrica
У вас с Коровиным проги различные - у тебя полный перебор, у него симулятор/перебор - что их сравнивать то?!
Кстате, можно и без файла обойтись
|
|
|
Re: Программисты помогите ID:10386 ответ на 10276 |
Вс, 13 ноября 2005 10:44 («] [#] [») |
|
|
Нет условия одни и теже, тока что добавил в прогу кнопочку и генерацию 10млн. случайных рук, если выше пары - играю, генерирую еще руку, сравниваю. Считаю МО. И время на все тоже.
Действительно не выходит засунуть все в 5 мегов. Всего различных пятерок - 28496, если упростить (выкинуть пустышки и т.д.) останется 7461 штука. Получаем 74610 - в слово не влазит
|
|
|
Re: Программисты помогите ID:10387 ответ на 10276 |
Вс, 13 ноября 2005 10:58 («] [#] [») |
|
|
Может я тормоз. Вы какие 10 млн. комбинаций все считаете за 5,8с или 9с. Вы мне скажите, сколько миллиардов рук (типа той задачи, которую я выше давал) вы можете просчитать за секунду (час, год). У меня секунд 5 только 1 руку считает при включение опции “точно”. Есть надежда улучшить этот результат в 100…1000 раз при реализации идеи Fabrikи.
|
|
|
Re: Программисты помогите ID:10388 ответ на 10276 |
Вс, 13 ноября 2005 11:36 («] [#] [») |
|
|
Fabrica писал | 2Korovin, //У меня в качестве слабого звена вылезла функция определения комбинации на руке, ее время сопоставимо со временем анализ игры дилера. //
А зачем ее вычислять/определять?
Я сразу сделал массив из 2598960 4-байтных слов по всем пятеркам карт. | Порочный путь, IMHO. C техасским холдемом не приходилось сталкиваться? Там как быть? Делать массив размером 133784560?
|
|
|
Re: Программисты помогите ID:10389 ответ на 10276 |
Вс, 13 ноября 2005 12:02 («] [#] [») |
|
|
А чем техасский от простого отличается?
Там разве не 5-тикарточные комбинации?
В 7-ми картах есть 7*6/2 = 21 пятерка.
Про 10млн. Я ж написал: запоминаю время. Далее цикл от 1 до 10 000 000, генерирую 2 пятерки, одна моя, другая дилера. Если у меня пара и выше, закрываюсь. Проверяю есть ли игра у дилера, если есть, чья рука старше. Если его -> мне -3 анте, если моя -> мне + по правилам покера в зависимости от моей силы пятерки. Все это складываю 10млн. раз. Запоминаю время конца цикла. Отнимаю от начального. Сумму / на 10млн. получаю МО простого покера, и время затраченное на игру 10 млн. рук.
Если обе руки генерирую сразу - 5,8сек, если руку дилера только если у меня есть игра - 4,4 сек.
|
|
|
Re: Программисты помогите ID:10390 ответ на 10276 |
Вс, 13 ноября 2005 12:23 («] [#] [») |
|
|
2Фабрика. Вы, я так понял, обмены еще не добавили. А стратегия что-то уж очень примитивная, на ТК, получается, не закрываетесь никогда. Погоняйте хоть 100 млн. все равно быстро считает. При стандартных выплатах и ТК играет сколько получается МО.
|
|
|
Re: Программисты помогите ID:10391 ответ на 10276 |
Вс, 13 ноября 2005 12:43 («] [#] [») |
|
|
Все что надо уже добавлено, даже заброшено давно. Все это еще было в июле 2003г., посмотрел дату файла пятерок.
Правда нет русского.
Есть 6-я, обмен 1,2.
А разговор идет про идею Коровина, для определения скорости расчета покера чтоб прога не зависела от компа. Имеется простая задача расчета простого покера без обменов на скорость. И стратегия тут не причем, про нее в этой задаче нет разговора.
|
|
|
Re: Программисты помогите ID:10392 ответ на 10276 |
Вс, 13 ноября 2005 12:50 («] [#] [») |
|
|
Fabrica писал | А чем техасский от простого отличается?
Там разве не 5-тикарточные комбинации?
В 7-ми картах есть 7*6/2 = 21 пятерка. | И все 21 по очереди проверять???
|
|
|
Re: Программисты помогите ID:10393 ответ на 10276 |
Вс, 13 ноября 2005 13:07 («] [#] [») |
|
|
Понятно. Вы тут друг друга, наверное, еще с форума покер.ру знаете. И у всех это пройденный этап. Тут хоть есть люди, кто успешно что-нибудь сейчас разрабатывает. И скажите, что сейчас актуально, а то я так плетусь сзади. Хотя у меня кроме русского тоже уже делать нечего.
|
|
|
Re: Программисты помогите ID:10394 ответ на 10276 |
Вс, 13 ноября 2005 13:22 («] [#] [») |
|
|
Да, все 21
Ну во-первых, в 7-ми картах определить, старшую комбинацию очень легко из массива 13*4. Суешь любое кол-во карт (например, в нашем случае 7) в этот массив, или например 46 карт, которые остались от руки игрока и КД, и практически сразу определяешь кол-во стритов, каре и т.д., очень быстро. Для 46 карт это выгодней, чем перебирать все 163185 возможный комбинаций. А вот для 21 наверно проще сделать 21 сравнение, чем разбирать сложной процедуров сравнений "в лоб" 7-ку карт. Надо же отсортировать, поискать флеши, стриты, каре, потом тройки, пары и т.д.
|
|
|
Re: Программисты помогите ID:10395 ответ на 10276 |
Вс, 13 ноября 2005 15:43 («] [#] [») |
|
|
Цитата: | Про 10млн. Я ж написал: запоминаю время. Далее цикл от 1 до 10 000 000, генерирую 2 пятерки, одна моя, другая дилера. Если у меня пара и выше, закрываюсь. Проверяю есть ли игра у дилера, если есть, чья рука старше | Мы говорим о разных вещах. Моя демка раздает 6 карт, 5 игроку и 1 дилеру. Считает точное число ВОЗМОЖНЫХ вариантов игры дилера старше/младше/равно. Вычисляет МО решения "закрыть", если оно больше -1, суммирует его, иначе -1. И так заданное число раз. Улавливаете разницу: сравнить 2 руки о посчитать МО руки против 1 карты дилера? Т.е моя демка демонстрирует скорость анализа руки игрока, а ваша скорость сравнения двух рук.
Цитата: | На 2 этапе, я так понял, вы откидываете определенные варианты по определенной логике | Считает все варианты, просто визуально показывает лучшее решение.
Насчет массива, я думал об этом. Если флеши проверять отдельно, все замечательно получается для рук из 5-6 карт, с 7-ю сложнее. А мне сейчас как раз 7 и нужно.
|
|
|
Re: Программисты помогите ID:10396 ответ на 10276 |
Вс, 13 ноября 2005 17:02 («] [#] [») |
|
|
Признаю, у меня тоже самое делает 10млн за 21,8 сек, против 9 сек Вашей проги. Т.е. считаю кол-во пятерок меньше/равно/больше и т.д.
|
|
|
Re: Программисты помогите ID:10397 ответ на 10276 |
Вс, 13 ноября 2005 17:11 («] [#] [») |
|
|
Всего в 2 раза, это же не в разы! Это Я, для точного расчета покупки шестой с обменом требуется 46*6*45=12420 анализов. При средней скорости 1 000 000 в секунду получаем 80 рук в секунду.
|
|
|
Re: Программисты помогите ID:10398 ответ на 10276 |
Вс, 13 ноября 2005 17:15 («] [#] [») |
|
|
Сорри, даже за 31 сек., нашел ошибку
|
|
|
Re: Программисты помогите ID:10399 ответ на 10276 |
Вс, 13 ноября 2005 17:20 («] [#] [») |
|
|
А время на генерацию 10 млн. случайных рук вычитаеш? Я очень много сил положил на оптимизацию скорости но всеравно меньше чем за 1000-2000 тактов процесоора анализировать нереально. Быстрее только прямая адресация в таблицу, но современной технике это не под силу.
|
|
|
Re: Программисты помогите ID:10400 ответ на 10276 |
Вс, 13 ноября 2005 18:04 («] [#] [») |
|
|
Не вычитаю. Всеравно у меня гораздо больше. Пусть "грязного" времени будет не 9, 9.5 сек, против 31сек всеравно меньше.
|
|
|