En relation: Nommez la main de poker
Une quinte flush est une main de poker contenant cinq cartes de rang séquentiel, toutes de la même couleur. Dans le cadre d'une quinte flush, un as peut se classer au-dessus d'un roi ou en dessous de deux. Un as peut être de rang élevé (par exemple, A ♥ K ♥ Q ♥ J ♥ 10 ♥ est un flush droit à as) ou faible (par exemple 5 ♦ 4 ♦ 3 ♦ 2 ♦ A ♦ est un flush droit à cinq), mais ne peut pas être classé à la fois haut et bas dans la même main (par exemple, Q ♣ K ♣ A ♣ 2 ♣ 3 ♣ est un flush à hauteur d'as, pas un flush droit).
Défi
Les N
cartes données (dans n'importe quel format raisonnable) produisent une valeur vraie si un flush droit est contenu dans la main de poker.
Contribution
N
nombre de cartes. (Dans tout format raisonnable)
Il y a quatre combinaisons; cœurs, bêches, diamants et massues (H, S, D, C)
.
Chaque costume a une carte pour les numéros 2 à 10, plus 4 cartes `` photo '', Ace, Jack, Queen et King (A, J, Q, K)
Remarque: vous pouvez prendre 10 comme T
Production
Truthy/Falsy
valeur
Cas de test
["AS", "2S", "3S", "4S", "5S"] => true
["3D", "9C", "4S", "KH", "AD", "AC"] => false
["5D", "6D", "7D", "8H", "9D", "10D", "JD"] => false
["JC", "7C", "5D", "8C", "AC", "10C", "9C", "5S"] =>true
[] => false
["AS", "2S", "3S"] => false
["JC", "QC", "KC", "AC", "2C"] => false
[ "2H", "3H", "4H", "5H", "6H", "7H"] => true
Les règles de code-golf standard s'appliquent.
Critères gagnants: Code le plus court dans chaque langue
la source
10
commeT
?Réponses:
Python 2 , 95 octets
Essayez-le en ligne!
Il y a 40 rinçages droits possibles, et cela les vérifie simplement tous. Chas Brown a économisé 2 octets; Jo King a économisé 4 autres.
la source
A
aux deux extrémités, donc je crois que changer36
pour40
devrait le réparer.R ,
1281269491 octetsEssayez-le en ligne!
La logique originale a été considérablement raccourcie par @ J.Doe.
Donne une matrice de 26 par 26 avec principalement un non-sens, mais toutes les cartes (avec les As répétés en bas) contenues dans les lignes 10 à 23 des colonnes 3, 4, 8 et 24. La matrice est créée en concaténant toutes les combinaisons des majuscules alphabet avec les lettres J à X remplacées par A, 2-9, T, J, Q, K, A, S via
chartr
. Nous obtenons C, D, H gratuitement!L'
%in%
aplatit la matrice colonne par colonne en un vecteur. Vérifiez ensuite si le codage de la longueur d'exécution est supérieur à 4 pour toute série deTRUE
correspondances.la source
rle
ANDouter
! Cela économise deux octetsouter
appel symétrique qui produit de nombreuses cartes invalides et utiliser la contrainte vectoriellein
pour éviterapply
. Ils doivent tous les deux être en place pour que cela fonctionne!JavaScript (ES6), 116 octets
Essayez-le en ligne!
Comment?
la source
Brachylog , 31 octets
Essayez-le en ligne!
la source
Retina 0.8.2 , 66 octets
Essayez-le en ligne! Explication:
Convertissez les cartes illustrées en leurs valeurs.
A
peut être 1 ou 14.Convertissez la valeur en unaire et suffixez-la pour que les cartes soient triées correctement.
Faites correspondre 5 cartes qui augmentent de 1 à chaque fois et assurez-vous que la dernière augmentation était exactement de 1.
la source
JavaScript (ES6), 106 octets
Accepte un tableau de représentations de chaînes de cartes, en les remplaçant
10
parT
. Essayez-le en ligne!Explication
Itère sur chaque carte et définit un indicateur dans un tableau de booléens à l'aide d'un index calculé à partir de la combinaison unique de son rang et de sa couleur. Ce tableau est ensuite stratifié pour permettre de faire correspondre un modèle de 5 valeurs véridiques consécutives.
Par exemple, une main avec un flush droit peut produire ce qui suit comme sous-chaîne de la représentation de chaîne complète du tableau booléen:
,,,,1,1,1,1,1,,,,
Étant donné que la première valeur de rang (c'est-à-dire A) est décalée par rapport au début de la chaîne, il y aura toujours des valeurs vides précédant tous
1
les caractères du tableau, garantissant que la représentation de la chaîne commencera par un,
la source
Java 10,
189167165 165164160157156 octetsPrend l'entrée comme une seule chaîne délimitée par des espaces (c'est-à-dire
"AS 2S 3S 4S 5S"
).-22 octets grâce à @ OlivierGrégoire .
-1 octet grâce à @AlexRacer .
Essayez-le en ligne.
Version golfée du code que j'ai utilisé pour Project Euler # 54 , que j'ai principalement fait avec des expressions régulières (pour le plaisir et pour en savoir plus sur les expressions régulières). Sans regex, cela aurait probablement été meilleur pour les performances et plus facile (s'applique probablement aussi pour jouer au golf cette réponse; nous y reviendrons plus tard).
Explication:
Explication regex supplémentaire:
"AKQJT98765432A".substring(i,i+5)
prend cinq cartes adjacentes basées suri
.replaceAll(".","(?=.*$0\\\\1)")
remplace chacune de ces cartes par"(?=.*c\\1)"
(oùc
est le caractère de la carte).replaceFirst(".1","([HSDC])")
remplacera alors le premier\\1
par([HSDC])
.C'est-à-dire que le regex total pour vérifier le Straight Flush pour les cartes dans la plage de valeurs
[9,5]
deviendra:^(?=.*9([HSDC]))(?=.*8\\1)(?=.*7\\1)(?=.*6\\1)(?=.*5\\1).*$
(REMARQUE:
String#matches
ajoute implicitement le trailing / leader^...$
pour vérifier la chaîne entière.) Ce regex:la source
".*"+
préfixe inutile .f
break
toi=-2
et le retour à l'return-1>i;
utilisation de votre approche (et 2 de plus en(.)
to.
et$1
to$0
). :)Nettoyer ,
145135octetsEssayez-le en ligne!
Simplifié:
la source
Japt , 37 octets
Prend l'entrée comme un tableau 2D.
Essayez-le
Explication
la source
Gelée , 18 octets
Essayez-le en ligne!
[..., ...]
Format de sortie: liste vide comme fausse, liste non vide comme vraie.
la source
PHP , 264 octets
Il résonne
1
s'il s'agit d'une chasse d'eau droite et0
ounull
non.Si vous nommez le fichier,
1X
vous pouvez l'enregistrer11 bytes
car vous n'avez pas besoin de le modifier$argv[0]
. Je ne sais pas pour l'instant pourquoi le nom de fichier peut le casser.Pour une raison quelconque, les chaînes
:;<=>
sont triées avant les chaînes0123456789
parasort
dans TIO même si elles:;<=>
ont des valeurs ASCII 58-62 et0123456789
des valeurs ASCII 48-57. Donc, si vous prenez le code du lien TIO ou ci-dessous et utilisez PHPTester avec la suite de tests suivante, cela fonctionne.Code TIO
Essayez-le en ligne!
la source
Kotlin , 226 octets
T utilisé pour 10 donc toutes les cartes ont 2 caractères.
Essayez-le en ligne!
la source
Pascal (FPC) ,
223216210209 octetsEssayez-le en ligne!
Utilise
T
pour 10. L'entrée contient 1 carte par ligne.Maintenant je l'ai tellement joué au golf que je ne sais plus comment ça marche ...
Explication:
la source