Loading...
nikolay.dimov83 avatar nikolay.dimov83 143 Точки

Full House with Jokers

Здравейте банда,

В последните седмици се опитвам да си възтановя формата и знанията, които бях постигнал през 2015 година и попаднах на една много интересна задача с която не мога да се справя. Заданието е да се намерят и отпечатат пълния брой на Full Houses с до 5 джокера, като условието е следното:

In most Poker games, the "full house" hand is defined as three cards of the same face + two cards of the same face, other than the first, regardless of the card's suits. The cards faces are "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" and "A". The card suits are "♣", "♦", "♥" and "♠". A special card "Joker" (denoted as "*") is used as wildcard and can replace any other card. Jokers do not have a suite. Jokes can be used several times in a hand. Write a program to generate and print all full houses and print their number. Example:

Output

(2♣ 2♦ 2♥ 3♣ 3♦) … (2♣ 2♦ 2♥ 3♣ 3♦) … (2♣ 2♦ 2♥ 3♣ 3♥) … (2♣ 2♦ 2♥ 3♣ *) …

(2♣ * * 3♣ *) … (A♠ A♥ A♦ K♠ K♣) … (A♦ A♥ A♠ * *) … (* * * * *)

119808 full houses

Мъча тази задача буквално от седмица, но не мога да стигна до заветните119808 комбинации. 

Ще се радвам, ако някой може да огледа решението ми и да ми подскаже къде греша:

https://pastebin.com/CSTNs3gt

Логиката ми на кратко е следната - първо намирам възможните комбинации от тройки и двойки в стандартно тесте от 52 карти. Без жокери.

След това комбинирам всяка възможна тройка с всяка двойка и намирам общия брой Full houses в стандартно тесте без джокери. Общо 3744 комбинации. Това със сигурност е вярно число - проверих го и с матматическа формула и крос-чекнах в сайтове, където покер играчи се учат да броят.

След това за всяка от тези комбинации развъртам комбинациите със замяна на всяка една от картите с един джокер и новите комбинации запазвам в масив

След това в новия масив съдърващ (комбинации с един джокер) заменям не-джокерските карти с джокер и новата комбинация запазвамв следващ масив с 2 джокера.

И така нататък докато получа масивите с по 0, 1, 2, 3 и 4 джокера. Тези масиви съдържат повторения. Затова ги обхождам и пълня уникални стойности във финалния масив, който отпечатвам.

Ако се абстрахираме, че метода е крайно неефективен - дори с него намирам само 35971 комбинации. И не спирам да си блъскам главата къде греша. Не мога да разбера чисто математически как са стигнали до тази бройка 119808. Моля ви помогнете! :D

Тагове:
0
Java Fundamentals 17/05/2022 14:23:04
tripTiPscout avatar tripTiPscout 24 Точки

Здравейте!

Много интересна задача!

Прави ми впечатление, че в output-а два от примерите са еднакви, а в трети от тях "(2♣ 2♦ 2♥ 3♣ *)" ръката, която се пада с един joker в реалния покер ще се тълкува като "каре" (four of a kind).

Ето нещо, което може да помогне за пресмятане на броя възможните комбинации с joker-и.

http://math.stackexchange.com/questions/530083/probability-for-fullhouse-in-poker-54-cards

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.