Latar Belakang
Brag adalah permainan kartu yang mirip dengan konsep, tetapi lebih sederhana dari, poker. Hand in brag terdiri dari tiga kartu dan diberi peringkat sebagai berikut dari tertinggi ke terendah:
Tiga kartu sejenis - ketiga kartu memiliki peringkat yang sama. Dinamakan sebagai "tiga Raja" dll.
Running flush alias straight flush. Ketiga kartu dengan jenis yang sama dan peringkat berturut-turut. Tangan dinamai oleh tiga kartu dalam urutan menaik diikuti oleh kata-kata "pada bouncing" untuk membedakan dari run / lurus sederhana, misalnya "ten-jack-queen on the bounce". Catatan ace baik tinggi atau rendah tetapi tidak keduanya - "king-ace-two" bukan sebuah run.
Jalankan alias lurus. Seperti di atas tetapi tanpa persyaratan untuk mencocokkan jas. Diberi nama sederhana misalnya "ten-jack-queen".
Flush - ketiga kartu dengan jenis yang sama, dinamai berdasarkan peringkat tertinggi, misalnya "Ace flush".
Pasangkan - dua kartu dengan peringkat yang sama bersama dengan sepertiga dari peringkat versi lain. Dinamakan sebagai "sepasang bertiga" dll.
Kombinasi lainnya, dinamai dengan peringkat tertinggi, misalnya "ace high".
Tantangan
Diberikan tiga kartu remi, keluarkan nama tangan kebanggaannya.
Kartu akan dimasukkan sebagai tiga string 2-karakter atau digabung sebagai string 6-karakter tunggal (mana yang lebih disukai implementasi Anda), di mana yang pertama dari setiap pasangan adalah peringkat (2 ... 9, T, J, Q, K, A) dan yang kedua menandakan setelan (H, C, D, S).
Aturan main golf standar berlaku - tulis program atau fungsi yang menerima input ini dan mengeluarkan nama tangan seperti yang dijelaskan di atas.
Anda dapat mengasumsikan input akan valid (peringkat dan setelan dalam kisaran di atas, tidak ada kartu yang diulang) dan dalam hal apa pun yang Anda inginkan, tetapi tidak akan berada dalam urutan tertentu.
Keluaran harus dalam semua modal, semua huruf kecil, atau huruf besar yang masuk akal misalnya huruf besar atau huruf besar. Peringkat numerik harus dijabarkan misalnya "puluhan" bukan 10.
Input & output sampel:
2H3C2D => "pair of twos"
TD8C9C => "eight-nine-ten"
4SKS9S => "king flush"
4D4H4S => "three fours"
5H3H2C => "five high"
2D3DAD => "ace-two-three on the bounce"
6D6C6H => "three sixes"
Ini adalah upaya pertama saya pada tantangan di situs ini, tolong sarankan perbaikan tapi lembut :)
sumber
"6D6C6S"
sebagai test case karena enam jamak yang anehJawaban:
Ruby,
384, 320Menerima serangkaian string dua char.
Menerjemahkan nilai pip menjadi nilai hex dan mengidentifikasi tangan berdasarkan berapa banyak nilai pip yang berbeda.
Beranotasi:
sumber
Python 2 ,
788, 715, 559, 556, 554, 546, 568,522 byte* sekarang melewati 'sixes' * terima kasih kepada Ben Frankel karena telah menghemat 46 Bytes!
Cobalah online!
Terima kasih untuk tantangan pertama yang keren!
sumber
D.get(a, b)
berarti mengakses nilai dalam dikt D pada kunci a, dengan nilai default b jika kunci tidak ditemukan. Itu sama dengan menulisD[a] if a in D else b
, yang sama dengan menulisD[a] if a in D.keys() else b
.PHP,
413405398409408406398 byteSayangnya, PHP tidak mendukung referensi array bersarang di dalam string;
yang akan menyelamatkan
65 byte lagi.Jalankan dengan
echo <hand> | php -nR '<code>
atau coba online .kerusakan
Membutuhkan PHP> = 5.6 (untuk
e[...]
)sumber
Python 2 - 583 byte
Saya terlalu baru untuk dapat mengomentari posting, jadi saya hanya memposting versi saya dari python solusion.
Memperbaiki masalah dengan 'es' untuk pasangan dan tiga dari enam. Terima kasih bukan pada Charles
Sedikit lebih mudah dibaca dengan beberapa komentar
sumber
j=0; if [z]*3==v:r="three %ss"%i(z)
keif [z]*3==v:r="three %ss"%d[z][0]
Tapi itu menghemat hanya 1 byte