|
3 / 4 / 0
Регистрация: 11.05.2015
Сообщений: 17
|
|||||||||||||||||||||||||||||||
Отсортировать poker hand16.03.2020, 14:24. Показов 3224. Ответов 19
Метки нет (Все метки)
Добрый день, пишу небольшую программу для покера, конкретно для омахи(одна из разновидностей покера). Омаха - карточная игра в покер, все тоже самое как и в Холдеме, все теже правила. НО раздают вместо 2-х карт ЧЕТЫРЕ карты. И мне для начала нужно правильно отсортировать эту руку(4 карты) в правильном порядке. Пара примеров на картинке:
Вот сам код, пока только получается правильно отсортировать по Рангу: Буду рад любой помощи, Спасибо. Кликните здесь для просмотра всего текста
0
|
|||||||||||||||||||||||||||||||
| 16.03.2020, 14:24 | |
|
Ответы с готовыми решениями:
19
Poker Poker Dice Энди Харрис |
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
||||||
| 16.03.2020, 14:51 | ||||||
0
|
||||||
|
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
|
|
| 16.03.2020, 15:02 | |
|
Компаратор в терминах Ява вам тут не поможет. Т.к. компаратор по двум объектам должен иметь возможность определить какой из них больше или не меньше другого. А у вас отношение порядка зависит от других объектов в руке.
Можно поступить так. Контейнер с картами в руке отсортировать по убыванию без учета масти. Это можно сделать и компаратором. Далее, создаем новый пустой контейнер. (*)Помещаем в новый контейнер первую карту из старого (отсортированного), помещенную карту из старого контейнера удаляем. Далее перебираем все оставшиеся элементы первого контейнера и помещаем в новый контейнер те, масть которых совпадает с первой помещенной картой (элементы из старого контейнера при этом удаляем). Если по достижении конца первого контейнера он не пуст, переходим к (*). Если пуст - задача выполнена.
0
|
|
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 16.03.2020, 15:26 | |
|
0
|
|
|
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
|
|
| 16.03.2020, 15:43 | |
|
0
|
|
|
3 / 4 / 0
Регистрация: 11.05.2015
Сообщений: 17
|
|
| 16.03.2020, 16:03 [ТС] | |
|
Пробывал я написать и такое и почти получилось, но там оказалась другая проблема. В перечисление Suit есть порядок мастей(хотя он ни на что не должен влиять) и когда рука сортируется по рангу и например раздали руку где 2 одинаковые старшие карты, то первой в сортировке встанет всегда та карта, у которой масть имеет порядковый номер выше, чем у другой и неважно, есть потом к ней карта с такой мастью или нет. А мне именно и нужно, что допустим при первых одниковых по рангу карты при сортировке вперед всегда ставала имеенно та карта, у которой масть. Но опять же как я описал проблему на картинке, особенно это касается 4-ой и 5-ой руки, где раздали 2 короля(одинаковых по рангу) и у них есть в руке еще по одной такой же мастевой карте, то там сортировка необходима со сравнением уже 2-х по рангу карт, у кого старше эта карта, та масть и встает вперед при сортировке. Если можно, то ответьте лучше с примером кода.
0
|
|
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 16.03.2020, 16:17 | |
|
Сначала сортируем по масти, внутри масти сортируем по номиналу. Так?
0
|
|
|
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
|
|||
| 16.03.2020, 16:30 | |||
|
bIVEHb, если вы по поводу моего алгоритма, то он проблему однозначно решает. И сводит к задаче школьного уровня. Код вам тоже дали, но чтобы его понять мне, например, требуется некоторое время.
Добавлено через 2 минуты
0
|
|||
|
3 / 4 / 0
Регистрация: 11.05.2015
Сообщений: 17
|
|||
| 16.03.2020, 16:43 [ТС] | |||
|
Пример, когда 2 масти в руке Раздали руку 8♠9♥A♠A♥ Это две масти Пики и Черви и есть 2 старшие карты - Тузы, так вот первым встанет Туз червей, потому что 2 карта червей 9-ка по рангу, старше 2-ой карты пик, которая 8-ка. Далее 3-й картой встанет Туз пик, четвертой = 8 пик и должно получится: A♥9♥A♠8♠ Еще пример, где одна масть: раздали руку Т♦Q♣A♠5♦ - это 10-ка бубей, Дама крестей, Туз пик, 5-ка бубей. Самая старшая карта = Туз бубей, есть карты такой же масти = нет. Есть такая же карта по рангу = нет. Значит эта карта первая станет. Далее по рангу Дама крестей, есть карты такой же масти = нет. Есть такая же карта по рангу = нет. Значит эта карта вторая. Далее по рангу 10-ка бубей, есть карты такой же масти = да = 5-ка бубей, но она по рангу меньше 10-ки, значит будет идти за 10-кой. Итого: A♠Q♣Т♦5♦ Я просто не знаю, как еще подробнее расписать((( Добавлено через 2 минуты
0
|
|||
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
||||||
| 16.03.2020, 16:50 | ||||||
0
|
||||||
|
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
|
||
| 16.03.2020, 17:00 | ||
|
{ 8 пик 8 черви туз пик туз черви } в каком порядке должны быть карты в руке?
0
|
||
|
3 / 4 / 0
Регистрация: 11.05.2015
Сообщений: 17
|
||||
| 16.03.2020, 17:25 [ТС] | ||||
|
Хороший вопрос, по идее конечно здесь без разницы, ведь если они равносильны, то какая разница какие из них встанут вперед. Вот именно из за вот таких нюансов, мне и непонятно, как решить эту проблему. Добавлено через 5 минут Добавлено через 11 минут
0
|
||||
|
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
|
||
| 16.03.2020, 17:31 | ||
|
Очередное решение от xoraxax превосходит уровень моего восприятия. Поэтому предложу альтернативный подход:
хранить карты одной масти в отдельном контейнере, каждый контейнер отсортировать по рангу карты. таким образом рука - контейнер содержащий четыре контейнера. Контейнеры в руке отсортировать по возрастанию рангов карт стоящих на первом месте, если они равны, то сравнивают карты на втором месте и т.д. Для каждой из сортировок можно написать компаратор. Добавлено через 1 минуту
0
|
||
|
3 / 4 / 0
Регистрация: 11.05.2015
Сообщений: 17
|
||
| 16.03.2020, 17:43 [ТС] | ||
|
Random hand, but still not sorted = [8C, 9S, JS, JC] Hand sorted by Rank = [JC, 8C, JS, 9S] Очевидно, что здесь быть так: [ JS, 9S, JC, 8C] - при равенстве валетов, здесь у масти Spades, вторая карта 9-ка старше второй карты Clubs 8-ки Вот еще: Random hand, but still not sorted = [7D, JS, JH, 6S] Hand sorted by Rank = [JH, JS, 6S, 7D] Должно быть так = [JS, 6S, JH, 7D] - при равенстве валетов, JS имеет в руке еще одну карту с такой же мастью и поэтому этот валет должен быть первой картой в этой руке. Вместо рандомной руки, можно просто вбить эти руки и посмотреть как отсортирует алгоритм xoraxax, чтоб не верить наслово мне))
0
|
||
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
||
| 16.03.2020, 18:35 | ||
|
0
|
||
|
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
|
||
| 16.03.2020, 21:57 | ||
|
Все равно, до такого кода я не дорос. Функциональные блоки только со справочником в руках кое-как могу расшифровать.
0
|
||
|
502 / 348 / 134
Регистрация: 14.06.2016
Сообщений: 669
|
||||||
| 16.03.2020, 22:30 | ||||||
Сообщение было отмечено bIVEHb как решение
Решение
1
|
||||||
|
3 / 4 / 0
Регистрация: 11.05.2015
Сообщений: 17
|
|||
| 17.03.2020, 13:21 [ТС] | |||
|
Добавлено через 2 часа 0 минут Примеры: Random hand, but still not sorted = [QD, QH, 3D, 3H] Hand sorted = [QD, QH, 3D, 3H] Должно быть так [QD, 3D, QH, 3H] или так [QH, 3H, QD, 3D] Random hand, but still not sorted = [AS, 8C, 8S, AC] Hand sorted = [AS, AC, 8C, 8S] Должно быть так [AS, 8S, AC, 8C] или так [AC, 8C, AS, 8S] Random hand, but still not sorted = [9D, TC, 9C, TD] Hand sorted = [TC, TD, 9D, 9C] Должно быть так [TC, 9C, TD, 9D] или так [TD, 9D, TC, 9C] Все таки даже при равных 2-х пар карт с разными мастями, они должны сортироваться по своей масти.
0
|
|||
|
502 / 348 / 134
Регистрация: 14.06.2016
Сообщений: 669
|
|
| 17.03.2020, 13:27 | |
|
Да, конечно, я забыл
cards.sort(Comparator.comparing((Card c) -> map.get(c.getSuit())).thenComparing(Card::getSuit).thenComparing(Card::getRank).reversed() );
0
|
|
|
3 / 4 / 0
Регистрация: 11.05.2015
Сообщений: 17
|
|
| 17.03.2020, 13:41 [ТС] | |
|
1
|
|
| 17.03.2020, 13:41 | |
|
Помогаю со студенческими работами здесь
20
Создание онлайн приложения Poker Програмное приложение для online poker Создание бота для приложения вконтакте ''Poker Shark"
right-hand operand Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|