Inspiré par ce défi et lié à celui-ci .
Contexte
Badugi [bæduːɡiː] est une variante de poker à faible tirage.
L' événement Pokerstars World Cup Of Online Poker à 1 000 $ commence dans les 3 heures et je devrai savoir à quel point mes mains sont bonnes!
Le jeu utilise un jeu standard de 52 cartes de quatre couleurs et treize rangs. Les combinaisons ne sont pas commandées et doivent être étiquetées cdhs
; les rangs - classés du plus haut K
au plus bas A
- sont KQJT98765432A
. En tant que tel, le jeu complet peut être représenté comme suit (séparé par des espaces):
Kc Kd Kh Ks Qc Qd Qh Qs Jc Jd Jh Js Tc Td Th Ts 9c 9d 9h 9s 8c 8d 8h 8s 7c 7d 7h 7s 6c 6d 6h 6s 5c 5d 5h 5s 4c 4d 4h 4s 3c 3d 3h 3s 2c 2d 2h 2s Ac Ad Ah As
Chaque joueur reçoit quatre cartes du jeu, il y a quatre tours d'enchères avec trois tours de tirage entre les deux (un joueur a toujours quatre cartes, ils ont la possibilité de changer 0-4 de leurs cartes avec de nouvelles du croupier sur chaque des trois tours de dessin).
Si plus d'un joueur est toujours actif après tous ces tours, il y a une confrontation, après quoi la ou les mains les plus fortes remportent les paris misés.
Le jeu se joue en low-ball, donc la main la plus basse gagne, et comme mentionné ci-dessus A
(as) est faible. De plus, le classement des mains est différent des autres formes de poker et peut être quelque peu déroutant pour les débutants.
La "main" jouée est la combinaison la moins bien classée composée du nombre le plus élevé possible de cartes "hors-combinaison" (toutes les combinaisons différentes) et "hors-rang" (tous les grades différents) (parmi les quatre cartes détenues). ). C'est-à-dire: si l'on détient quatre cartes de couleurs et de rangs distincts, on a une main de 4 cartes (appelée "badugi"); si l'on n'a pas une main de 4 cartes mais a un ou plusieurs ensembles de trois cartes de couleurs et de rangs distincts, on a une main de 3 cartes (on choisit son meilleur); si l'on n'a ni main à 4 cartes ni main à 3 cartes, on a probablement une main à 2 cartes, mais sinon on n'a pas une main à 1 carte.
En tant que telle, la meilleure main possible est la main à 4 cartes
4-3-2-A
- les cartes hors rang les plus basses de quatre couleurs différentes , souvent appelées "numéro 1". La main la plus faible possible serait la main à 1 carteK
et n'est possible qu'en tenant exactementKc Kd Kh Ks
.Notez que
4c 3h 2c As
est pas un « numéro 1 », puisque la4c
et2c
sont de la même couleur, mais il est le plus fort des mains de 3 cartes,3-2-A
il dessine avec d' autres3-2-1
s (commeKh 3d 2s Ah
) et bat toutes les autres mains 3 cartes , mais perd à toutes les mains de 4 cartes (qui pourraient être aussi faibles queK-Q-J-T
).- L'autre main de 3 cartes possible qui pourrait être fabriquée
4c 3h 2c As
est4-3-A
, mais elle est plus faible (plus élevée) donc elle n'est pas choisie.
- L'autre main de 3 cartes possible qui pourrait être fabriquée
De même,
8d 6h 3s 2h
une main à 3 cartes se joue comme8-3-2
- il y a deux combinaisons hors-rang de la taille 3 et8-3-2
est meilleure (inférieure) que8-6-3
puisque les trois (ou "trey") sont inférieures aux six.
La comparaison des mains les unes contre les autres suit la même logique - toute carte 4 bat n'importe quelle carte 3, toute carte 3 bat toute carte 2 et toute carte 2 bat toute carte 1, tandis que les mains du même nombre de cartes utilisées sont par rapport à leur rang le plus élevé au plus bas (par exemple: 8-4-2
battements 8-5-A
mais pas n'importe lequel 8-4-A
, 8-3-2
ou 7-6-5
)
Le défi:
Étant donné deux collections non ordonnées chacune de quatre cartes, identifiez celle (s) qui remporte une épreuve de force Badugi (identifiez les deux s'il s'agit d'un tirage).
L'entrée peut être quelque chose de raisonnable:
- une seule chaîne des huit cartes comme indiqué ci-dessus (avec ou sans espaces), les quatre à gauche étant une main et l'autre à droite (avec un séparateur en option); ou une liste de personnages de la même façon
- une liste de deux chaînes - une par main, ou une liste de listes de caractères de la même manière
- deux chaînes distinctes ou entrées de liste, une par main
- les cartes entre les mains peuvent déjà être séparées (donc une liste de listes de listes est très bien)
Notez cependant:
- les cartes ne peuvent être rangées dans aucun ordre avant la saisie
- ... et les combinaisons et les rangs sont fixés comme les étiquettes de caractères spécifiées ici - Si votre langue ne prend pas en charge de telles constructions, suggérez simplement quelque chose de raisonnable et demandez si c'est une alternative acceptable compte tenu de vos contraintes de langues.
La sortie doit être soit
- formaté de la même manière que l'entrée, ou une représentation imprimée de celle-ci; ou
- être l' un des trois résultats distincts et cohérents (par exemple:
"left"
,"right"
,"both"
, ou1
,2
,3
, etc.)
Vraiment - tant qu'il est clair laquelle des deux entrées est identifiée, cela devrait aller.
Cas de test
input -> output
(notes)
----------------------------------------------------------------------------
3c 2s 4d Ah - As 3h 2d 4h -> 3c 2s 4d Ah
(4-card 4-3-2-A beats 3-card 3-2-A)
3c 2s 4d Ah - As 2c 3d 4h -> 3c 2s 4d Ah - As 2c 3d 4h
(4-card 4-3-2-A draws with 4-card 4-3-2-A)
2d Ac 4h 3c - Kh Ad 9s 2c -> Kh Ad 9s 2c
(3-card 4-2-A loses to 4-card K-9-2-A)
Kc Tc Qc Jc - Ac Ad Ah As -> Ac Ad Ah As
(1-card T loses to 1-card A)
9c 9h Qc Qh - Qs Kh Jh Kd -> Qs Kh Jh Kd
(2-card Q-9 loses to 3-card K-Q-J)
2d 5h 7c 5s - 2h 3c 8d 6c -> 2d 5h 7c 5s
(3-card 7-5-2 beats 3-card 8-3-2)
3s 6c 2d Js - 6h Jd 3c 2s -> 6h Jd 3c 2s
(3-card 6-3-2 loses to 4-card J-6-3-2)
Ah 6d 4d Ac - 3h 2c 3s 2s -> 3h 2c 3s 2s
(2-card 4-A loses to 2-card 3-2)
2h 8h 6h 4h - 6d 2d 5d 8d -> 2h 8h 6h 4h - 6d 2d 5d 8d
(1-card 2 = 1-card 2)
Il s'agit de code-golf , donc le code le plus court en octets gagne par langue, et le code le plus court gagne en général. Ne laissez pas les langues de golf vous décourager de soumettre dans d'autres langues, et ... amusez-vous!
la source
[['3c', '2s', '4d', 'Ah'], ['As', '3h', '2d', '4h']]
raisonnable?O
à l'avant.Réponses:
Perl 6 , 128 octets
Essayez-le en ligne!
Prend une liste de mains (également plus de deux) qui sont des listes de cartes qui sont comme des chaînes
Kc
. Renvoie les indices des mains avec le score le plus bas. Pour deux mains, c'est(0)
si la première main gagne,(1)
si la seconde main gagne et(0, 1)
pour un match nul.Expliqué:
la source
<...>
votre harnais de test se traduit-il par une liste de chaînes? Est-ce une sorte de sucre qui dit que le contenu doit être divisé en espaces?<a b c>
en charge en plusqw(a b c)
de Perl 5.JavaScript (ES6),
209202192182181 181 octets7 octets enregistrés grâce à @Neil
Prend l'entrée comme un tableau de tableaux de chaînes. Renvoie
true
si la première main gagne,false
si la seconde main gagne ou2
en cas d'égalité.Cas de test
Afficher l'extrait de code
Comment?
la source
join
?Gelée , 36 octets
Un lien monadique prenant une liste de deux listes de personnages
- chacun étant une représentation séparée par des espaces de la main (par exemple
"Ac 2d 4s 3h"
)renvoyant une liste de deux nombres identifiant le ou les gagnants avec
1
et tout perdant avec0
- c'est-à-dire
[1, 0]
= les gains à gauche;[0, 1]
= victoires à droite;[1, 1]
= dessiner.Essayez-le en ligne! ou voir la suite de tests .
Comment?
la source
Python 3 ,
207204 octetsEssayez-le en ligne!
Enregistré 3 octets grâce à Jonathan Frech
Retourne
1
si la première main gagne,-1
si la seconde main gagne et0
en cas d'égalité.La fonction
h
calcule une liste qui représente la main.Le lambda compare deux représentations de la main. Je pense que cela pourrait être raccourci, mais je voulais retourner seulement trois valeurs et je n'ai pas trouvé de moyen plus simple de faire une comparaison.
la source
L=len
et en remplaçant toutes les autres occurrences delen
avecL
.s=set()
pars={0}
etset(x)&s or
avecs&set(x)or