| ||||
| ||||
|
Важные объявления |
|
14.03.2007, 17:52 | #81 (permalink) | |
Бессмертный
Регистрация: 30.04.2004
Сообщений: 3,612
|
Цитата:
__________________
Arthur Grey |
|
0 |
14.03.2007, 18:30 | #82 (permalink) | |
Новичок
Регистрация: 06.03.2007
Адрес: Москва
Сообщений: 27
|
Цитата:
|
|
0 |
15.03.2007, 01:44 | #83 (permalink) | ||
Бессмертный
Регистрация: 13.02.2004
Адрес: Россия
Сообщений: 3,027
|
Цитата:
Цитата:
|
||
0 |
15.03.2007, 19:17 | #84 (permalink) | |
Новичок
Регистрация: 06.03.2007
Адрес: Москва
Сообщений: 27
|
Цитата:
Допущения при покупке игры. 1) Если у дилера после покупки (или после повторной покупки) выпал F и у игрока тоже F, то считается, что карта дилера больше, игнорируя старшинство F. 2) Если у дилера после покупки (или после повторной покупки) выпал FS или FR, то считается, что у него S того же старшинства. Старшинство S учитывается, в том числе возможность stay. Но отклоненния небольшие, тем более в очень редко встречающихся случаях. В остальном все точно. Сейчас пишу быстродействующую версию основного алгоритма и тестовую программы, такой же, как у всех. Уже написал 336 строк - подсчет количества "есть игра" у дилера и общепринятый тест. Не успел еще заполнить массив комбинаций у игрока. Пока массивы в сумме занимают 1МБ. |
|
0 |
16.03.2007, 16:05 | #85 (permalink) | |
Новичок
Регистрация: 06.03.2007
Адрес: Москва
Сообщений: 27
|
Цитата:
http://forum.cgm.ru/msg?th=8273&prevloaded=1&st= art=160 Интересна с какой скоростью она считалась. Пока не вникал. Сделал в основном алгоритме расчет количества у дилера "есть игра". Получилось в тесте в 3 раза быстрее, чем у Грея. Так что расчет, когда у игрока пара, можно сделать в 5 раз медленнее для получения такого же результата, как у Грея. |
|
0 |
16.03.2007, 16:09 | #86 (permalink) | |
Бессмертный
Регистрация: 13.02.2004
Адрес: Россия
Сообщений: 3,027
|
Цитата:
|
|
0 |
16.03.2007, 16:42 | #87 (permalink) | |
Бессмертный
Регистрация: 30.04.2004
Сообщений: 3,612
|
Цитата:
__________________
Arthur Grey |
|
0 |
16.03.2007, 17:44 | #88 (permalink) | ||
Новичок
Регистрация: 06.03.2007
Адрес: Москва
Сообщений: 27
|
Цитата:
Количество "есть игра" я считаю, как количество парок + количество туз-король, включая стриты и флеши с тузом и королем + количество стритов, исключая тузовых + количество флешей - количество FS и FR. По-моему, быстрее посчитать уже невозможно. Цитата:
|
||
0 |
16.03.2007, 18:41 | #89 (permalink) | |
Бессмертный
Регистрация: 30.04.2004
Сообщений: 3,612
|
Цитата:
__________________
Arthur Grey |
|
0 |
19.03.2007, 10:20 | #90 (permalink) | |
Новичок
Регистрация: 06.03.2007
Адрес: Москва
Сообщений: 27
|
Цитата:
1. Считаем количества свободных карт по рангам - это числа 0..4. 2. Считаем количества среди этих чисел, не включая ранга карты дилера отдельно 0, отдельно 1, 2 и 3 (остальные - 4). Пусть эти количества -r0,r1,r2,r3. r0+r1+r2+r3<=12 (нет ранга карты дилера). Таких наборов (r0,r1,r2,r3) всего С(12+4,4)=1820. 3. Делаем массив перехода от числа 0..13^4-1 к числу 0..1820-1. Кстати, можно не хранить r0,r1,r2,r3, а сразу вычислять r0+r1*13+r2*13^2+r3*13^3, все время добавляя 13^s. Но в моем новом коде этого пока нет. Такая же сумма, но не по всем рангам, а только до третьей карты в паре понадобится при подсчете количества меньших пар у дилера (я сейчас этим занимаюсь). 4. Для каждого набора (r0,r1,r2,r3) однозначно определно количество комбинаций 2, 2+2, 3, 3+2, 4, а также их общее количество ("парок"). Получаем для каждого числа 0..1820-1 массив структур, составленных из этих чисел. Кроме того, при получении количества пар у дилера, младших пары игрока по старшинству пары, потребуется массив [1820][5], где второй индекс указывает на количество свободных карт в ранге, для которого узнается количество пар этого ранга у дилера. Первый индекс - тот же, что и исходный (для определения "парок"). Для оптимизации я все циклы развернул в полный код без циклов. Для флешей сделал массив [13][2^12], где первый индекс - ранг карты дилера (КД), а второй - занятость карт масти открытой КД, исключая ранга КД в двоичной системе счисления. Компилятор Microsoft Visual Studio (MVS) может оказаться быстрее компилятора Builder6, который я использую, поэтому можно будет вычислительную часть теста сделать как dll на MVS. Также можно будет в основной моей программе импортировать функцию подсчета комбинаций у дилера. Таким образом, можно будет разным оболочкам присоединять вычислительный модуль как dll. Что можно использовать для отладки, сравнения результатов и т.п. |
|
0 |
21.03.2007, 15:31 | #91 (permalink) |
Новичок
Регистрация: 06.03.2007
Адрес: Москва
Сообщений: 27
|
Написал и отладил код основной процедуры для случая "нет игры" и "пара" (подсчет младших и равных пар). Если в случаях, когда не "пара" считать как нет игры, а когда "пара" считать полностью, то мой тест дает время лучше, чем у Грея в 3,03 раза.
Доля пар к общему количеству комбинаций: 0,4226. Время подсчета "нет игры" без оболочки теста / время оболочки теста = 2,02. Чистое время подсчета старшинства пары / подсчет "нет игры" = 0,57 (исключается время оболочки теста). |
0 |
22.03.2007, 18:41 TS | #92 (permalink) |
Ветеран
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
|
Как я понимаю, у нас новый лидер... 8-)
Моя последняя демка обгоняет более чем на 2 сек. с полной колодой демку Грея (на моем железе). Чем больше карт выкинуть, тем быстрее обгоняет (странно)..
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883 |
0 |
23.03.2007, 21:01 TS | #93 (permalink) |
Ветеран
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
|
Файл обновил, в старом млин деление на нуль c неполной колодой было Извиняюсь, не проверил как следует...
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883 |
0 |
24.03.2007, 04:01 | #94 (permalink) |
Бессмертный
Регистрация: 13.02.2004
Адрес: Россия
Сообщений: 3,027
|
Круто. Всетаки соревноватьльность - двигатель прогресса. Не пора ли уже обмены+покупку игры добавлять? Правда есть опасение что соревнования не получится, всем лень, но если будет хотябы один результат, будет шанс что кто-нибудь подтянется и переплюнет.
|
0 |
24.03.2007, 11:53 | #95 (permalink) | |
Бессмертный
Регистрация: 30.04.2004
Сообщений: 3,612
|
Цитата:
__________________
Arthur Grey |
|
0 |
24.03.2007, 15:10 | #98 (permalink) | ||
Бессмертный
Регистрация: 03.05.2004
Адрес: Планета Шелезяка
Сообщений: 3,615
|
Цитата:
__________________
Не мечи бисер перед свиньями. (Иисус Христос). |
||
0 |
25.03.2007, 03:09 TS | #99 (permalink) | |
Ветеран
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
|
Цитата:
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883 |
|
0 |
25.03.2007, 03:22 TS | #100 (permalink) |
Ветеран
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
|
Насчет обменов: нашими тестами не получится, имхо. Неизбежно переполнение даже Int64 для Value, и уж очень долго будет считать.. В наших тестах просчитываются игры: C{52,1} * C{51,5} * C{46,4} = 52 * 2349060 * 163185 = 19,933,230,517,200
Если добавить обмен 1 карты, то считать уже надо: C{52,1} * C{51,5} * (C{46,4} + C{5,4} * C{42,1} * C{41,4}) = 52 * 2349060 * (163185 + 5 * 42 * 101270) = 122151120 * 21266700 = 2,597,751,223,704,000 Короче гроб.. В лучшем случае будет в 210 (C{5,4} * C{42,1}) раз дольше Кто интересно будет ждать 3.5 часа? Надеюсь, правильно сосчитал... устал блин.
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883 |
0 |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Автозамена. TEST | Grey | Техническая поддержка форума | 10 | 21.12.2008 13:01 |
Japanese IQ Test | Vors | Поговорим за жизнь | 9 | 28.04.2008 11:40 |
был такой Donkey test | Гламуризатор-р-р | Около покерного стола | 1 | 22.04.2007 03:25 |
|
|