Tantangan ini adalah untuk mencetak angka Cribbage hand. Jika Anda tidak bermain Cribbage, Anda harus belajar. Kami bermain dengan setumpuk poker standar, dan satu tangan terdiri dari empat kartu plus "kartu naik". Ada dua jenis tangan: normal, dan 'boks tangan'.
Kartu datang dalam format di vs
mana v
salah satu dari: A23456789TJQK
(T untuk sepuluh) dan s
salah satunya SCDH
. Tangan akan diberikan dalam bentuk (misalnya)
AS 2D 3H JS | 4S
dimana 4S
kartu up. Boks tangan akan memiliki format
JD 3C 4H 5H | 5S !
Kartu wajah memiliki nilai 10, dan kartu as memiliki nilai 1. Penilaian dilakukan sebagai berikut.
- Fifteens: untuk setiap subset dari lima kartu yang jumlahnya 15, tambahkan dua poin.
- Pasangan: untuk setiap pasangan kartu dengan peringkat yang sama (bukan nilai), tambahkan dua poin.
- Run: untuk setiap run maksimal kartu berturut-turut dengan panjang lebih dari 2, tambahkan panjang run dalam poin.
- Siram: jika kelima kartu memiliki jenis yang sama, tambahkan lima poin. Kalau tidak, jika semua kecuali kartu naik adalah jenis yang sama, tambahkan empat poin. Jika ini adalah boks tangan, varian empat poin tidak dihitung.
- Nobs: jika ada jack di tangan dengan kartu yang sama di atas, tambahkan satu poin.
Catatan:
Triples dan merangkak dari jenis tidak istimewa - ada tiga pasang dalam tiga, sehingga tiga bernilai 6 poin.
Berjalan bisa tumpang tindih. Misalnya,
AS AH 2D 3C | 2C
(lari ganda ganda) memiliki empat kali panjang 3 dan dua pasang, jadi bernilai 3 + 3 + 3 + 3 + 2 + 2 = 16 poin.Hanya lari maksimal yang dihitung, jadi
KS QD JD TC | 9S
bernilai 5 poin, karena ini adalah lari 5. Sub-lari tidak dihitung.
Aturan Rumah:
Tidak mungkin untuk mencetak 19 poin di tangan. Alih-alih nol, laporkan skor 19.
Contoh:
5S 5H 5D JS | KS
21
AS 2D 3H JS | 4S !
9
JD 3C 4H 5H | 5S
12
9S 8S 7S 6S | 5H !
9
9S 8S 7S 6S | 5H
13
8D 7D 6D 5D | 4D !
14
8D 7D 6D 5D | 4D
14
AD KD 3C QD | 6D
19
Ini kode golf. Solusi terpendek menang.
Jawaban:
GolfScript,
187178174 karakterKarena saya tidak pernah bermain cribbage, saya tidak tahu trik mencetak gol yang bagus. Karena itu saya pikir satu-satunya cara untuk bersaing (setidaknya sedikit) adalah menggunakan bahasa golf. Kode GolfScript cukup sederhana, kasus uji dapat ditemukan di sini .
Kode dengan cara yang lebih mudah dibaca ( diformat ulang dan sedikit tidak diolah ):
Sunting: Logika yang diubah untuk lima belas dan flushes.
sumber
C, 364
388karakterIni besar dan jelek (meskipun tidak sebesar dulu):
(Jeda baris ditambahkan untuk membuatnya lebih mudah dibaca; yang tidak termasuk dalam penghitungan di atas.)
Uraian masalah tidak menentukan apakah kode yang diperlukan untuk memeriksa input yang tidak valid, jadi tentu saja saya berasumsi bahwa program bebas untuk melakukan kesalahan sesuka hati jika input, katakanlah, berisi spasi ekstra.
Ini versi yang tidak dikoleksi:
sumber
Ruby 1.9,
359356Itu terlalu lama - hampir sebanyak solusi C.
sumber
Sesuatu untuk dimulai dengan .. Ruby,
422 365 355352Sedikit tidak berbulu:
Tes unit untuk versi golf:
Hasil:
sumber
Python, 629 karakter
Saya hanya memposting milik saya karena tidak ada orang lain yang memilikinya. Ini cukup panjang :(
sumber
print s or 19
? Saya pikir Anda juga dapat menggunakan Python 3.x dan mencukur 3 karakter lagi (raw_input
keinput
, laluprint s or 19
keprint(s or 19)
).Python 2,
606584 byteDisimpan 22 byte karena bermain golf Jo King .
Cobalah online!
Sedikit lebih pendek dari jawaban grc , dan mengambil rute berbeda untuk sampai ke sana.
Penjelasan:
Penjelasan untuk menjalankan logika secara khusus:
sumber
if
untuk mencapai 584 byteStax , 106 byte
Jalankan dan debug online!
Bonus untuk CP437: Lihat simbol pakaian itu di Stax yang penuh sesak? Sayang sekali bahwa klub tidak muncul ...
Setara ASCII adalah
Penjelasan
sumber