Ваш друг запросив вас в останню хвилину в покер на високі ставки, і, як комп'ютер, ви вирішили використати свої навички, щоб отримати перевагу в грі. Ваше завдання буде, дано 2 cards(ваша рука) та 0, 3, 4 or 5 cards(роздані картки), ви повинні вирішити, якою найкращою може бути рука. Якщо всі 7 карток подано як аргументи, відповідь досить чітка. Якщо менше, проблема стає більш складною. Однак цього недостатньо для того, щоб дати вам перевагу, яку ви шукаєте, ви також повинні обчислити найкращу руку з решти карт, щоб зрозуміти, що можуть мати і ваші опоненти.
Оновлення Hold'em
Якщо ви не знаєте про hold'em, кожен гравець у грі починається з 2 карт як "рука". Протягом 3-х поворотів виявляються додаткові картки, які можна ділити між усіма гравцями. Перша черга, 3 картки розкриваються. Другий, ще 1 і втретє розкривається підсумкова карта. Дві картки, подані першими, представляють вашу руку, тоді як остання представляє 0, 3, 4 або 5 карт, що даються послідовними поворотами.
Можливі номери:
[2,3,4,5,6,7,8,9,T(10),J,Q,K,A]
Можливі костюми:
[S,C,H,D]
Повна колода:
[2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS, # Spades.
2C,3C,4C,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC, # Clubs.
2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH, # Hearts.
2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD] # Diamonds.
Рейтинг рук:
1:Royal Flush (A-K-Q-J-10, all from the same suit).
2:Straight Flush (Sequential cards, all from the same suit).
3:Four-of-a-Kind (Self explanatory).
4:Full House (3-of-a-kind and a 2-of-a-kind).
5:Flush (All cards are from the same suit).
6:Straight (Sequential Cards, any suits).
7:3-of-a-Kind (Self explanatory).
8:2-Pair (Double 2-of-a-Kind).
9:Pair (2-of-a-Kind).
10:High Card (You have absolutely nothing except a single card).
Давайте візьмемо приклад-два та пройдись по них:
Простий приклад:
[AS, AC],[AH,AD,9S,9C,9H]-> 3(Чотири-від-роду), 3(Чотири-з-роду)
Найкраща рука, яку ви матимете в цьому налаштуванні, - це четверо з добрих рук. Найкраща можлива рука ваших супротивників - це також 4-х-на-виду, так як ви не можете мати KQJ10 у своїх руках з двома картками.
[5C,2C],[6C,4C,JH,JD]-> 2(Прямий флеш), 3(4-х від виду)
Ви ризикуєте отримати прямий флеш, але оскільки у вас 2 / 5C в руці, ніхто більше не зважає на те, що ви тримаєте обидві середні карти. Найкраще, на що вони можуть сподіватися, - це 2 кишенькові джекси та отримання Джека на флопі.
[JS,JC],[]-> 1(Royal Flush), 1(Royal Flush)
Ніякої інформації, яку ви можете використовувати проти них, не було надано, все, що ви можете сказати на даний момент, - це те, що вони можуть мати тільки королівський флеш в діамантах / сердечках, але так само можливо, що ви отримаєте королівський флеш, як і вони. Насправді, на всі входи, де флоп ще не відбувся, слід отримати відповідь 1-1.
[2C,4S],[3C,7S,9D,AH,JD]-> 10(Висока карта), 7(3-х вид)
Це приклад того, коли ви абсолютно закручені, і немає можливості повороту чи рум'яну з-за річки. Означення найкращої руки тут - кишенькові тузи, що призводять до 3-х видів.
Вимоги вводу / виводу
- Вхід повинен бути розділений між тим, що є у вас в руці, і тим, що є суспільними знаннями; це, швидше за все, буде простіше, незалежно від реалізації.
- Картки можуть бути кортежами або рядками.
- Рука та ігрове поле можуть бути масивами або обмеженими рядками.
- Вихідні дані повинні бути двома індексами зі списку поданих мною рук (EG [2,1]).
- Він може бути повернутий як частину функції, надрукований на консоль або вихід відповідним чином.
- Повинно бути два чітких значення, одне для вашої найкращої руки, інше для найкращого.
- 10 може бути представлено як
Tабо як10, що б для вас не було сенсу. - Стандартні лазівки заборонені.
Критерії виграшу
- Це кодовий гольф , найнижчий обсяг байтів з вимикачем дати публікації.
Aі a 1. Все інше виглядає добре.
Aі1в можливих дозволених картах? Крім того, я не думаю, що існує справді вагома причина вимагати абревіатур обличчя над числовими значеннями11.