Здравствуйте, гость | Правила · Помощь |
» мизер: вопрос знатокам, играю мизер, не знаю чем ходить |
» 7/07/2017, 17:18, Кутруповезет
|
Между прочим, коллеги. А ведь вполне исторические процессы происходят в мире преферанса. Программа для идеальной игры в преферанс становится реальностью. Как мне кажется, с таким темпом через несколько лет задача будет полностью решена, а там, глядишь, и возможности компьютеров подтянутся.
Преферанс как живая игра, видимо, выживет. Но у вас, Николай, есть реальный шанс стать могильщиком преферанса-оnline. Если, конечно, доведете дело до конца и если откроете доступ к окончательному варианту. |
|
||
По мне это очевидный тезис, ибо преферанс в своей основе счетная (и логическая) игра. Что означает: никакой человек не устоит против "правильного" алгоритма. По той простой причине, что возможности счета и запоминания у "машины" и человека просто несопоставимы. Однако, сейчас в такое не поверите, 15...17 лет назад эта простая и очевидная мысль была недоступна для понимания подавляющему большинству тутошних форумчан, которое тогда было очень многочисленно. И это большинство буквально смеялось мне в лицо, когда я озвучивал соответствующий тезис. Сейчас такие вообще навряд ли найдутся, а если найдутся, будут выглядеть просто профанами в проблеме. ) |
||
» 7/07/2017, 17:58, Кутруповезет
|
||||
Уже выполнена прекрасная работа, поздравляю. Я бы не останавливался, ведь это действительно увлекательно. По объемам - розыгрыш мизера уже готов, игра на взятки в основном тоже. Вистование сделать вполне реально с помощью перебора всех вариантов или ММК. Сложнее всего, видимо, распасы, но и там не вижу принципиальных препятствий. |
||||
|
||||
Ну а в чем тогда сложность? Только надо не на векторе из восьми переменных операции проводить, а сразу на uint16. Тогда битовыми сдвигами совсем просто. Грубо так (но в реальной программе, разумеется. можно сделать изящнее): Накладываем двухбитовую скользящую маску. Если в процессе "скольжения" маски встретилась встретился признак "карта в сносе", то исключаем ее с этого места со сдвигом оставшейся части uint16 на 2 бита. После чего в старшие 2 бита записываем признак "карта в носе". На практике сделал бы совсем не так. Взял бы uint32. В старшие 16 бит записал бы код расклада. В младшие 16 бит записал бы повторяющийся код "карта в сносе". Маской (НЕ скользящей) проверял бы младшие 2 бита из этих старших 16 бит. И делал бы либо линейный сдвиг на 2 бита всего uint32 (карта не в сносе), либо сдвиг на 2 бита только старшей половины (uint16). После 8 таких операций нужно над младшим uint16 сделать циклический сдвиг на 2 бита столько раз, сколько раз встретились карты из сноса. НО!!! Если код "карта в прикупе" не 2, а 0, то алгоритм заметно упрощается: * В начале младший uint16 достаточно просто обнулить, а не записывать в него хитрую последовательность двоек. * В конце не надо делать циклический сдвиг. Достаточно сделать простой линейный - старшие биты автоматически заполнятся нулями. Но есть и промежуточное хитрое решение ... Позволит не менять коды карт, но не использовать циклический сдвиг |
||||
|
Кстати, Николай ...
Есть такая идея: Ранжировать дырки по опасности. И рассматривать только те сносы, которые не ухудшают ситуацию в масти. например, не делают из недырявой масти дырявую. Не делают из дыры на 0-1 взятки дыру на 0-1-2 взятки. И т.д. |
» 7/07/2017, 18:07, Кутруповезет
|
||
Звучит угрожающе. На что это замах - не на искусственный интеллект? |
||
|
Андрей, оказывается все еще проще.
Пусть vector - закодированная в 0, 1, 2 восьмикарточная масть. for (auto it = vector.begin(); it < vector.end(); ++it) { if (*it == 2) std::rotate( it, it + 1, vector.end() ); } Вот и все, мы склеили любую комбинацию масти в классы эквивалентности. Дальше просто упаковываем vector в int16. Протестил на мизере. 8169 сносов склеилось в 3387. Правда, я ожидал более существенного эффекта.. Кстати, мизер {"sJ17 cJ97 dJ87 hQ", "", "", ""} плох в плане склейки, ибо не имеет длинных мастей с непрерывными последовательностями карт. Предполагаю, что на других структурах эффект от склейки может быть в разы лучше. Это сообщение отредактировал extasy - 7/07/2017, 18:35 -------------------- the elephant has you.. |
|
||||
Я имел ввиду преферансные интеллектуальные системы ) Зависит от энтузиазма. Можно создать систему, которая будет подстраиваться под оппонента и находить оптимальные решения в рамках несовершенства соперника. -------------------- the elephant has you.. |
||||
|
||
Сомнительно ) Чтобы понять опасная дырка или нет ее надо сначала оценить.. Оценка происходит путем перебора. Ты предлагаешь создать альтернативный инструмент оценки сноса? На мизере фильтруются все сносы, содержащие 7ку и это очень эффективная вещь. 15246 сносов фильтруются в 8169 и склеиваются в итоге в 3387. -------------------- the elephant has you.. |
||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
0 Пользователей: