Défi:
Étant donné deux mains de cinq cartes, déterminez laquelle gagne en fonction du classement standard des mains de poker .
Contribution:
Dix cartes séparées par des espaces de stdin ou comme arguments de ligne de commande, selon votre préférence. Les cinq premières cartes sont la main du joueur 1 tandis que les cinq dernières sont la main du joueur 2. Chaque carte sera une chaîne de deux lettres de la forme RS où R est rang et S est couleur. Les rangs vont de 2 à 9, T pour dix, et J, Q, K et A pour Jack, Queen, King et Ace respectivement. Les combinaisons sont H, D, C, S pour Hearts, Diamonds, Clubs et Spades respectivement. Vous devez afficher le numéro du joueur qui gagne: «1» ou «2».
Exemples de cartes:
AS - the Ace of Spades
QD - the Queen of Diamonds
2C - the Two of Clubs
TH - the Ten of Hearts
Exemples d'entrée à sortie:
5H 5C 6S 7S KD 2C 3S 8S 8D TD -> 2
Explication: le joueur 1 a une paire de cinq tandis que le joueur 2 a une paire de huit.
5D 8C 9S JS AC 2C 5C 7D 8S QH -> 1
Explication: Aucun des joueurs n'a quelque chose de spécial, mais la carte haute du joueur 1 est un as tandis que la carte haute du joueur 2 est une reine.
2D 9C AS AH AC 3D 6D 7D TD QD -> 2
Explication: le joueur 1 a trois as, le joueur 2 a une couleur de diamants.
4D 6S 9H QH QC 3D 6D 7H QD QS -> 1
Explication: Les deux joueurs ont une paire de reines, mais la deuxième carte la plus haute du joueur 1 est un neuf tandis que le joueur 2 est un sept.
Règles et clarifications:
- Reportez-vous au classement standard des mains de poker pour plus de détails sur la comparaison des mains.
- Vous pouvez supposer qu'il n'y a pas de cartes répétées dans chaque paire de mains.
- Vous pouvez supposer qu'il y a un gagnant certain dans chaque cas.
- Le costume n'entre pas en ligne de compte dans le classement d'une main. Par exemple, deux quintes flush royales de couleurs différentes sont égales (donc toute entrée où les deux joueurs ont une quinte flush est invalide par la règle précédente).
- Comme il s'agit du code golf, la réponse la plus courte l'emporte.
Remarques:
- Lié à cette question et à celle-ci .
- Basé sur le problème du projet Euler 54
Réponses:
Haskell -
352339 caractèresExécute:
Non-golfé et commenté, vous pouvez donc voir la techinque:
la source
Python -
774722707698685 caractèresJ'ai choisi de générer une chaîne pour chaque main qui la représente, en commençant par un caractère pour le type de main, suivi de caractères décrivant la variation particulière du type (par exemple, de quelle carte en aviez-vous seulement 4?), Suivi de les valeurs des cartes restantes en cas d'égalité (si les deux joueurs ont la même double paire, la 5ème carte devra décider qui gagne). Je l'ai testé assez longuement, mais je ne joue pas vraiment au poker, donc j'espère avoir bien compris. De plus, je sais que ce n'est pas encore complètement joué, je peux probablement raser quelques dizaines de caractères plus tard.
la source
_=lambda c:chr(97+c)
. De plus, vous avez des espaces inutiles après:
s et=
s. Enfin, utilisez;
au lieu de nouvelles lignes pour séparer les instructions afin de réduire les espaces utilisés pour l'indentation.JavaScript -
526508usage:
non golfé:
la source
la source
perl,
801733 caractèresJe pense que c'est une mise en œuvre assez simple. Fondamentalement, pour chaque main, nous trions les costumes et les visages séparément. Ensuite, nous faisons une autre copie des visages avec des as comptant bas afin que nous puissions vérifier les lignes droites avec des as bas. Ensuite, nous déterminons si nous avons une couleur ou une quinte, et quelle est la carte haute. Ensuite, nous vérifions simplement les matchs par ordre de score (nous vérifions d'abord les quinte flush, puis quatre types, etc.). Le score réel est juste la concaténation du type de main suivi des valeurs faciales des cartes dans l'ordre où elles comptent (c'est _s () dans la version non golfée, u () dans la version golfée). C'est ici:
Et voici l'équivalent le moins golfé:
la source
AH 2C 3S 4S 5D 6C 7S 7C 7D TD
produit un résultat de2
, mais je pense qu'une ligne droite bat trois en son genre