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