J'ai vu ce problème l'autre jour (alors en congé de maladie). Je discute de l'idée de sonner depuis. D'un côté, cela semble être un devoir. (C'est un problème simple, votre code est difficile à comprendre, ce qui indique un manque d'expérience.)
D'un autre côté, cela ne me dérange pas de donner un coup de main. Je ne vais pas faire votre travail pour vous, mais je peux vous diriger dans la bonne direction ...
Première étape: Définir le problème. Une fois clairement définies, les réponses deviennent beaucoup plus simples.
A "full house", vraisemblablement 5 cartes composées d'un trois-de-un-type plus une paire. Il s'agit vraisemblablement d'un jeu à un seul jeu. Il s'agit vraisemblablement d'un deck standard (As, 2,3,4,5,6,7,8,9, Jack, Queen, King) avec des combinaisons (Spades, Clubs, Coeurs, Diamants). (Abrégé ci-dessous sous (A23456789JQK) et (SCHD).)
Vous mentionnez 3700 combinaisons. On peut donc supposer que les mains (2S, 2C, 2H, 3H, 3D) et (3D, 3H, 2H, 2C, 2S) sont équivalentes plutôt que distinctes. (C'est en fait un point important, comme Sean & Loadmaster dans leurs commentaires Il ya 311 875 200 (52 * 51 * 50 * 49 * 48) dessins de 5 cartes possibles, mais seulement 2 598 960 de ces mains sont distinctes!)
Nous avons (13 * 4) possibles trois-de-un-genre. Par exemple. Pour chaque carte de rang (telle que 3), nous pouvons avoir 4 trois-de-un-types ({0S, 3C, 3H, 3D}, {3S, 0C, 3H, 3D}, {3S, 3C, 0H, 3D }, {3S, 3C, 3H, 0D}). (Peut-être vous commencez à remarquer un modèle: 0111 1011 1101 1110.)
Donnez à notre trois-en-un, et en supposant que c'est un jeu de plate-forme unique et de plate-forme standard, notre paire doit être l'un des 12 autres restants classements de cartes. Pour chaque rang de carte, il y a six possibilités pour une paire. Par exemple. Étant donné un rang de carte de 7, nous pourrions avoir ({7S, 7C, 0H, 0D}, {7S, 0C, 7H, 0D}, {7S, 0C, 0H, 7D}, {0S, 7C, 7H, 0D} {0S, 7C, 0H, 7D}, {0S, 0C, 7H, 7D}). (Encore une fois, vous remarquerez peut-être le modèle: 1100 1010 1001, 0110 0101, 0011.)
Cela nous donne 13 * 4 * 12 * 6 = 3744 combinaisons.
À partir de là, il suffit de faire une boucle pour les imprimer.
Je vous suggère de considérer plus de noms de variables descriptives. Bien qu'il existe des lieux et des heures pour utiliser des variables de boucle à caractère unique, cela n'en fait pas partie. Le code bien écrit est presque auto-documenté, permettant à la documentation de se concentrer sur les abstractions de plus haut niveau plus complexes. Les quelques caractères supplémentaires que vous économiserez vous coûteront une fortune en temps de débogage. Si vous le souhaitez, vous pouvez être paresseux comme moi, apprendre emacs, utiliser (require 'completion), (global-set-key "\ C - \\"' complet), taper les premiers caractères et laisser emacs auto-compléter pour vous .
Je vous suggère de prendre en charge, et peut-être privé, les méthodes. Par exemple, vous pourriez être en mesure de faire quelque chose comme: (. Cela a été un moment que je codé en Java)
for (suit = 0; suit < 4 ; ++ suit)
private_printThreeOfAKind(card, suit!=0, suit!=1, suit!=2, suit!=3)
Trois d'entre eux (! =) Serait vrai, on serait faux.
En ce qui concerne les paires d'impression, vous pouvez étudier le continuer l'instruction. Réf.: http://en.wikipedia.org/wiki/Java_syntax#continue_statement
E.g. Cela vous permet de sauter dans le cas où la carte paire est le même rang que les trois-of-a-kind:
if (threeOfAKindCard == pairCard)
continue;
Je vous suggère de construire votre logiciel dans certaines régions. Essayer de construire un système complet fonctionne rarement, même pour les experts. Construire des pièces, les tester, rincer, répéter. Oui, cela signifie écrire un code d'échafaudage que vous ne pourrez pas faire tourner. Peut-être même une sous-classe de test ... Mais les petites étapes sont plus faciles à travailler. Comme vous vous améliorez en tant que programmeur, vous serez en mesure de prendre de grandes étapes ...
Mmmm, vous voulez dire Java Full House ... Le code est difficile à lire, s'il vous plaît reformater afin que nous puissions le lire plus facilement –
édité titre de Java. Si vous voulez le faire en javascript, vous devez tout recommencer. : D –
Oui, s'il vous plaît indent à quelque chose de plus d'un espace. –