Вдохновленный этим вызовом и связанный с этим .
Фон
Badugi [bæduːɡiː] - вариант игры в покер с низким уровнем мяча.
Мероприятие $ 1K Pokerstars World Cup по онлайн-покеру начнется в течение 3 часов, и мне нужно знать, насколько хороши мои руки!
В игре используется стандартная колода из 52 карт четырех мастей и тринадцати рангов. Костюмы неупорядочены и должны быть маркированы cdhs
; ранги - упорядоченные от высшего K
к низшему A
- являются KQJT98765432A
. Таким образом, полная колода может быть представлена следующим образом (через пробел):
Kc Kd Kh Ks Qc Qd Qh Qs Jc Jd Jh Js Tc Td Th Ts 9c 9d 9h 9s 8c 8d 8h 8s 7c 7d 7h 7s 6c 6d 6h 6s 5c 5d 5h 5s 4c 4d 4h 4s 3c 3d 3h 3s 2c 2d 2h 2s Ac Ad Ah As
Каждому игроку сдают по четыре карты из колоды, есть четыре раунда торговли с тремя раундами розыгрыша (у игрока всегда есть четыре карты, у них есть возможность заменять 0-4 своих карт на новые от дилера на каждом из трех раундов розыгрыша).
Если после всех этих раундов все еще активен более одного игрока, происходит вскрытие, после чего сильные руки выигрывают ставки.
В игре играют с низким шаром, поэтому выигрывает самая низкая рука, и, как уже упоминалось выше A
(туз), низка. Кроме того, ранжирование рук отличается от других видов покера, и может быть несколько запутанным для начинающих.
Разыгрываемая «рука» - это комбинация с наименьшим рейтингом, составленная из наибольшего количества возможных карт как «вне масти» (все разные масти), так и из карт «вне ранга» (все разные ранги) (из четырех удерживаемых карт) ). То есть: если у вас четыре карты разных мастей и разных рангов, у каждого есть 4-карточная рука (называемая «бадуги»); если у человека нет 4-карточной руки, но есть набор или наборы из трех карт как разных мастей, так и разного ранга, то у каждого есть 3-карточная рука (одна выбирает свою лучшую); если у вас нет ни 4-карточной, ни 3-карточной руки, то, вероятно, у вас есть 2-карточная рука, но если нет, то у 1-карточной руки.
Таким образом, лучшая возможная рука - это рука с четырьмя картами
4-3-2-A
- самые низкие карты без ранга из четырех разных мастей , которые часто называют «номер 1». Самая слабая возможная рука - это рука с 1 картой,K
и она возможна только при точном удержанииKc Kd Kh Ks
.Обратите внимание , что
4c 3h 2c As
это не «Номера-1», так как4c
и2c
в той же масти, но это является самым сильным из рук 3-карты,3-2-A
она рисует с другими3-2-1
с (какKh 3d 2s Ah
) и бьет все другие руки 3-карты , но проигрывает всем 4-карточным рукам (которые могут быть такими же слабыми, как иK-Q-J-T
).- Другая возможная 3-карточная рука, из которой можно сделать
4c 3h 2c As
это4-3-A
, но она слабее (выше), поэтому не выбрана.
- Другая возможная 3-карточная рука, из которой можно сделать
Точно так же
8d 6h 3s 2h
3-карточная рука разыгрывается как8-3-2
- есть две неконфессиональные комбинации нестандартного размера 3 размера, и8-3-2
она лучше (ниже), чем8-6-3
три (или «трэй») ниже, чем шесть.
Сравнение рук друг с другом следует той же логике - любые 4 карты бьют любые 3 карты, любые 3 карты бьют любые 2 карты, а любые 2 карты бьют любую 1 карту, в то время как руки с одинаковым количеством использованных карт являются по сравнению с их самым высоким рангом до самого низкого (например: 8-4-2
удары, 8-5-A
но не любой из 8-4-A
, 8-3-2
или 7-6-5
)
Соревнование:
Учитывая две неупорядоченные коллекции каждой из четырех карт, определите одну (ие), которая выиграет вскрытие Бадуги (укажите обе, если это ничья).
На входе может быть что угодно:
- одна строка из всех восьми карт, как указано выше (с пробелами или без них), причем левая четверка - одна рука, а правая - другая (с дополнительным разделителем); или список персонажей таким же образом
- список из двух строк - по одной на руку, или список списков символов таким же образом
- две отдельные строки или список ввода, по одному на руку
- карты в руках могут быть уже разделены (так что список списков списков в порядке)
Обратите внимание, однако:
- карты не могут быть расположены в любом порядке до ввода
- ... и масти и ранги фиксируются как обозначения символов, указанные здесь. Если ваш язык не поддерживает такие конструкции, просто предложите что-то разумное и спросите, является ли это приемлемой альтернативой, учитывая ваши языковые ограничения.
Выход должен быть
- отформатированный так же, как ввод или напечатанное представление; или
- быть один из трех различных и последовательных результатов (например:
"left"
,"right"
,"both"
, или1
,2
,3
, и т.д.)
Действительно - до тех пор, пока ясно, какой из двух входов идентифицируется, все должно быть в порядке.
Контрольные примеры
input -> output
(notes)
----------------------------------------------------------------------------
3c 2s 4d Ah - As 3h 2d 4h -> 3c 2s 4d Ah
(4-card 4-3-2-A beats 3-card 3-2-A)
3c 2s 4d Ah - As 2c 3d 4h -> 3c 2s 4d Ah - As 2c 3d 4h
(4-card 4-3-2-A draws with 4-card 4-3-2-A)
2d Ac 4h 3c - Kh Ad 9s 2c -> Kh Ad 9s 2c
(3-card 4-2-A loses to 4-card K-9-2-A)
Kc Tc Qc Jc - Ac Ad Ah As -> Ac Ad Ah As
(1-card T loses to 1-card A)
9c 9h Qc Qh - Qs Kh Jh Kd -> Qs Kh Jh Kd
(2-card Q-9 loses to 3-card K-Q-J)
2d 5h 7c 5s - 2h 3c 8d 6c -> 2d 5h 7c 5s
(3-card 7-5-2 beats 3-card 8-3-2)
3s 6c 2d Js - 6h Jd 3c 2s -> 6h Jd 3c 2s
(3-card 6-3-2 loses to 4-card J-6-3-2)
Ah 6d 4d Ac - 3h 2c 3s 2s -> 3h 2c 3s 2s
(2-card 4-A loses to 2-card 3-2)
2h 8h 6h 4h - 6d 2d 5d 8d -> 2h 8h 6h 4h - 6d 2d 5d 8d
(1-card 2 = 1-card 2)
Это Код-гольфТаким образом, самый короткий код в байтах выигрывает для каждого языка, а самый короткий код в целом выигрывает. Не позволяйте языкам игры в гольф отталкивать вас от представления на других языках и ... получайте удовольствие!
источник
[['3c', '2s', '4d', 'Ah'], ['As', '3h', '2d', '4h']]
разумного?O
к фронту.Ответы:
Perl 6 , 128 байт
Попробуйте онлайн!
Принимает список рук (также более двух), которые представляют собой списки карт, которые похожи на строки
Kc
. Возвращает индексы рук с наименьшим счетом. Для двух рук это(0)
если победит первая рука,(1)
если победит вторая рука, и(0, 1)
для ничьей.Разъяснение:
источник
<...>
в вашем тестовом жгуте переводится список строк? Это какой-то сахар, который говорит, что содержимое должно быть разбито на пробелы?<a b c>
в дополнение кqw(a b c)
Perl 5.JavaScript (ES6),
209202192182181 байтСохранено 7 байтов благодаря @Neil
Принимает ввод как массив массивов строк. Возвращает,
true
если выигрывает первая рука,false
если выигрывает вторая рука, или2
в случае ничьей.Контрольные примеры
Показать фрагмент кода
Как?
источник
join
?Желе , 36 байт
Монадическая ссылка принимая список из двух списков символов
- каждый из которых является пространством , отделенным представление стороны (например
"Ac 2d 4s 3h"
) ,возвращающим список из двух чисел , обозначающих победитель (ы) с
1
и любым неудачником с0
- то есть
[1, 0]
= левой победу;[0, 1]
= правильные победы;[1, 1]
= рисоватьПопробуйте онлайн! или посмотрите набор тестов .
Как?
источник
Python 3 ,
207204 байтаПопробуйте онлайн!
Сохранено 3 байта благодаря Джонатану Фреху
Возвращает,
1
если выигрывает первая рука,-1
если выигрывает вторая рука и0
в случае ничьей.Функция
h
вычисляет список, который представляет руку.Лямбда сравнивает два представления руки. Я думаю, что это может быть сокращено, но я хотел вернуть только три значения и не нашел более простой способ сделать сравнение.
источник
L=len
и заменяя все остальные вхожденияlen
сL
.s=set()
наs={0}
иset(x)&s or
сs&set(x)or