Die Eingabe besteht aus zwei Wörtern mit fünf Buchstaben. Es müssen eigentlich keine Wörter aus dem Wörterbuch sein, sondern jeweils nur fünf Buchstaben, ganz in Klein- oder Großbuchstaben, wie Sie möchten. In den Eingabewörtern wird nur AZ angezeigt, und die Länge beträgt immer 5 Zeichen.
Ihr Programm besteht darin, beide wie Pokerhände zu bewerten und die höhere Hand auszugeben. Natürlich treffen hier keine Anzüge zu, nur Ranglisten, so dass es keine Flushes gibt.
Das typische Poker-Ranking-System lautet: "1 Paar", "2 Paare", "3 Gleiche", "Straight", "Full House", "4 Gleiche", "5 Gleiche" und natürlich Es besteht die Möglichkeit, dass die Hand (oder das Wort in diesem Fall) nichts wert ist.
Bei Gleichstand gelten Buchstaben, die näher an A liegen, als höher, sodass ein Paar As ein Paar Bs schlägt. In einigen Fällen können beide Hände identisch sein, aber in einer anderen Reihenfolge (oder nicht). In diesem Fall wird entweder eine Hand oder eine neu erstellte Version davon ausgegeben.
Diese externe Seite enthält Informationen darüber, wie Sie den Gewinner identifizieren können, und befasst sich insbesondere mit Unentschieden innerhalb der spezifischen Ranglisten, falls Sie nicht mit dem Erzielen von Pokerhänden vertraut sind.
Bei Geraden : Die Buchstaben müssen im Alphabet nebeneinander stehen und dürfen nicht umlaufen. Also ist 'defgh' in beliebiger Reihenfolge ein Straight, 'xyzab' nicht.
Beispiele, wie man eine einzelne Hand erzielt:
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
Das Programm wird also tatsächlich zu folgenden Ergebnissen führen:
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
Die Reihenfolge der Buchstaben sowohl in der Eingabe als auch in der Ausgabe ist irrelevant, daher kann die Reihenfolge in Ihrer Ausgabe von der Eingabe abweichen, es muss jedoch derselbe Bestand an Buchstaben vorhanden sein.
Die Ausgabe muss genau fünf Buchstaben enthalten - nicht mehr und nicht weniger.
Es gelten die üblichen Codegolfregeln. Kürzester Code gewinnt.
JavaScript (
250247232 Byte)Ungolfed Code & Testfälle in JSFiddle: https://jsfiddle.net/CookieJon/8yq8ow1b/
Dank @RickHitchcock einige Bytes gespart. @StephenS & @Arnauld
quelle
s=0,h=0
=>s=h=0
Ich glaubex[v]=x[v]?++x[v]:1
werden kannx[v]=(x[v]|0)+1
, 3 Bytes sparen.Python 2.7,
242223 BytesÄhnelt im Grundkonzept den Javascript-Beispielen (Sortierung nach Handkraft mit Ausnahme von Geraden; dann nach Rang); aber ausnutzen hat
collections.Counter
leider.most_common
nicht ganz das gewünschte verhalten; musste also einen benutzerdefinierten Sortierschlüssel hinzufügen.Edit: ein bisschen mehr Code-Golfen, um 19 Bytes zu reduzieren.
Code ohne Golf
quelle
Mathematica, 635 Bytes
.
.
Eingabeformular
quelle