|
3 / 4 / 0
Регистрация: 11.05.2015
Сообщений: 17
|
|||||||||||||||||||||||||||||||
Отсортировать poker hand16.03.2020, 14:24. Показов 3200. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|