L'entrée sera composée de deux mots de cinq lettres. Ils ne doivent pas nécessairement être des mots du dictionnaire, seulement cinq lettres chacun, tous en minuscules ou en majuscules, selon votre choix. Seul AZ apparaîtra dans les mots saisis et ils auront toujours 5 caractères.
Votre programme consiste à les marquer tous les deux comme s'ils étaient des mains de poker et à produire la main la plus élevée. Bien sûr, les costumes ne s'appliqueront pas ici, seulement les classements, donc il n'y a pas de couleurs.
Le système de classement de poker typique est le suivant: «1 paire», «2 paires», «3 d'une sorte», «droit», «full house», «4 d'une sorte», «5 d'une sorte», et bien sûr il est possible que la main (ou le mot dans ce cas) ne vaille rien.
Dans le cas de liens , les lettres plus proches de A sont considérées comme plus élevées, donc une paire de As bat une paire de Bs. Dans certains cas, les deux mains peuvent être identiques, mais dans un ordre différent (ou non), dans ce cas, sortez la main ou une version utilisée.
Cette page externe contient des informations sur la façon d'identifier le gagnant et aborde en particulier les liens dans les classements spécifiques, au cas où vous ne savez pas comment marquer des mains de poker.
Dans le cas des lignes droites : les lettres doivent être adjacentes dans l'alphabet et ne doivent pas être enroulées. Donc «defgh» dans n'importe quel ordre est une ligne droite, «xyzab» ne l'est pas.
Exemples pour marquer une seule main:
word | scored as
---------------------
ccccc | 5 of a kind <-- highest ranking
woooo | 4 of a kind
opopo | full house
vurst | straight
vovvu | 3 of a kind
ppoww | 2 pairs
upper | 1 pair
kjsdf | high card only (in this case D) <-- lowest ranking
Le programme produira donc des résultats comme celui-ci:
input | output
-----------------------
voviu,kjsdf | voviu because a pair beats nothing
opoqo,upper | opoqo because 3 of a kind beats a pair
woooo,ggegg | ggegg because 4 Gs beats 4 Os
queue,hopup | queue because 2 pairs beats 1 pair
lodpl,ddkop | ddkop because pair DD beats pair LL
huhyg,hijht | huhyg both have pair HH, but G beats I
ddffh,ccyyz | ccyyz both have 2 pairs, but CC(yyz) beats DD(ffh)
okaok,nkunk | nkunk KK ties with KK, but NN beats OO
abcdf,bcdef | bcdef because it is a straight
qtery,retyq | qtery identical! so doesnt matter
abedc,vyxwz | abedc because it is a "higher" straight
hhhij,hijkl | hijkl because straight beats 3 of a kind
aaabb,zzzzz | zzzzz because nothing beats 5 of a kind
L'ordre des lettres dans l'entrée et la sortie n'est pas pertinent, donc l'ordre dans votre sortie peut être différent de l'entrée, mais le même inventaire des lettres doit être présent.
La sortie doit contenir exactement cinq lettres - ni plus, ni moins.
Les règles habituelles de codegolf s'appliquent. Le code le plus court gagne.
JavaScript (
250247232 octets)Code non testé et cas de test dans JSFiddle: https://jsfiddle.net/CookieJon/8yq8ow1b/
Enregistré quelques octets grâce à @RickHitchcock. @StephenS & @Arnauld
la source
s=0,h=0
=>s=h=0
Je croisx[v]=x[v]?++x[v]:1
peut devenirx[v]=(x[v]|0)+1
, en économisant 3 octets.Python 2.7,
242223 octetsSimilaire dans le concept de base aux exemples javascript (trier par la force de la main à l'exception des lignes droites, puis par rang); mais profiter de
collections.Counter
Malheureusement,.most_common
n'a pas tout à fait le comportement souhaité; a donc dû ajouter une clé de tri personnalisée.Edit: un peu plus de code golf pour réduire 19 octets.
Code non golfé
la source
Mathematica, 635 octets
.
.
Formulaire de saisie
la source