Inputnya adalah dua kata lima huruf. Mereka sebenarnya tidak harus menjadi kata-kata kamus, hanya lima huruf, masing-masing huruf kecil atau huruf besar semua, pilihan Anda. Hanya AZ yang akan muncul dalam kata-kata input dan panjangnya akan selalu 5 karakter.
Program Anda adalah untuk menilai mereka berdua seolah-olah mereka tangan poker dan menghasilkan tangan yang lebih tinggi. Tentu saja setelan tidak akan berlaku di sini, hanya peringkat sehingga tidak ada flush.
Sistem peringkat poker khas berjalan: '1 pasang', '2 pasang', '3 dari jenis', 'lurus', 'rumah penuh', '4 dari jenis', '5 dari jenis', dan tentu saja ada kemungkinan tangan (atau kata dalam kasus ini) tidak bernilai apa-apa.
Dalam kasus ikatan , huruf lebih dekat ke A dianggap lebih tinggi, sehingga sepasang As mengalahkan sepasang B. Dalam beberapa kasus kedua tangan mungkin identik, tetapi dalam urutan yang berbeda (atau tidak), dalam hal ini keluaran baik tangan atau versi terpaksa.
Halaman eksternal ini berisi informasi tentang cara mengidentifikasi pemenang dan terutama membahas ikatan dalam peringkat tertentu, jika Anda tidak terbiasa dengan cara mencetak gol poker.
Dalam hal lurus : huruf-huruf harus bersebelahan dalam alfabet dan tidak diperbolehkan melilit. Jadi 'defgh' dalam urutan apa pun adalah lurus, 'xyzab' tidak.
Contoh cara mencetak satu tangan:
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
Jadi program ini benar-benar akan menghasilkan hasil seperti ini:
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
Urutan huruf dalam input dan output tidak relevan, sehingga urutan dalam output Anda dapat berbeda dari input, tetapi inventaris huruf yang sama harus ada.
Keluaran harus mengandung tepat lima huruf - tidak lebih, tidak kurang.
Aturan codegolf biasa berlaku. Kode terpendek menang.
JavaScript (
250247232 byte)Kode & uji kasus yang tidak digabungkan di JSFiddle: https://jsfiddle.net/CookieJon/8yq8ow1b/
Menyimpan beberapa byte dengan terima kasih kepada @RickHitchcock. @StephenS & @Arnauld
sumber
s=0,h=0
=>s=h=0
Saya percayax[v]=x[v]?++x[v]:1
bisa menjadix[v]=(x[v]|0)+1
, menghemat 3 byte.Python 2.7,
242223 byteMirip dalam konsep dasar dengan contoh javascript (urutkan berdasarkan kekuatan tangan dengan pengecualian untuk lurus; lalu menurut peringkat); tetapi mengambil keuntungan dari
collections.Counter
Sayangnya,.most_common
tidak memiliki perilaku yang diinginkan; jadi harus menambahkan kunci pengurutan khusus.Sunting: sedikit lebih banyak kode golf untuk mengurangi 19 byte.
Batalkan kode golf
sumber
Mathematica, 635 byte
.
.
Formulir input
sumber