Besok adalah festival Pertengahan Musim Gugur, dan dengan semangat liburan itu, saya akan memperkenalkan permainan judi yang kami (orang-orang dari Xiamen ) mainkan selama liburan!
Aturan
Permainan ini dimainkan dengan enam dadu 6 sisi. Kombinasi angka yang berbeda memiliki peringkat yang berbeda, dengan penekanan khusus pada merangkak dan yang. Tugas Anda adalah menulis program / fungsi yang akan memberi peringkat pada tangan, diberi gulungan 6 dadu. Berikut adalah peringkatnya (Saya telah sedikit memodifikasi / menyederhanakan aturan):
Saya kira hanya orang China yang dapat melakukan tantangan ini! Oke, baiklah, berikut ini beberapa penjelasan bahasa Inggris.
- 0: 4 merangkak dan 2 yang.
- 1: 6 merangkak.
- 2: 6.
- 3: 6 dalam bentuk apa pun kecuali empat dan satu.
- 4: 5 merangkak.
- 5: 5 dalam bentuk apa pun kecuali untuk merangkak.
- 6: 4 merangkak.
- 7: Lurus. (1-6)
- 8: 3 merangkak.
- 9: 4 dalam bentuk apa pun kecuali 4.
- 10: 2 merangkak.
- 11: 1 empat.
- 12: Tidak ada.
Memasukkan
6 angka, array 6 angka, atau string 6 angka yang mewakili nilai dari 6 dadu gulungan dari 1-6
Keluaran
Program / fungsi Anda dapat mengembalikan / menampilkan apa pun untuk menunjukkan peringkat, selama setiap peringkat ditunjukkan oleh satu output dan sebaliknya. Ex. Menggunakan angka 0-12, 1-13, dll.
Contoh (Menggunakan 0-12 sebagai output)
[1,1,1,1,1,1]->2
[1,4,4,4,1,4]->0
[3,6,5,1,4,2]->7
[1,2,3,5,6,6]->12
[3,6,3,3,3,3]->5
[4,5,5,5,5,5]->5
Ini adalah kode-golf, sehingga jumlah byte terpendek menang!
[1,2,3,5,6,6]->13
??10
tidak dilewati.Jawaban:
Arang , 55 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Tidak melewati 10. Penjelasan:
Hitung frekuensi tertinggi dari digit mana pun.
Jika ada 6 jenis, kurangi posisi digit dalam string
14
dari 2. Ini menghasilkan 1 untuk 6 4s, 2 untuk 6 1s, dan 3 untuk 6 dari yang lainnya.Jika ada 5 dari jenis, maka hasilnya adalah 5 kecuali ada 5 4s, dalam hal ini 1 dikurangi.
Jika ada 4 dari jenis, maka jika ada 4 4s maka hasilnya adalah 6 kecuali ada 2 1s dalam hal ini hasilnya adalah 0, jika tidak hasilnya adalah 9.
Jika semua digit berbeda maka hasilnya adalah 7.
Kalau tidak, hasilnya adalah 12 - (4 >> (3 - # dari 4s)).
sumber
JavaScript (ES6), 88 byte
Cobalah online! atau Uji semua kemungkinan gulungan!
Output integer sesuai dengan pemetaan berikut:
Bagaimana?
metode
Output dihitung dengan melakukan bitwise OR antara:
Pengecualian:
Meja
Contoh
Berkomentar
sumber
R , 100 byte
Menyandikan skor sebagai sekelompok conditional diindeks. Lebih sederhana daripada pendekatan stringy-regex pertama saya.
Edit - bug yang diperbaiki dan sekarang peringkat semua gulungan.
Cobalah online!
sumber
JavaScript (Node.js) , 169 byte
Cobalah online!
Kembali
1..13
sumber
Python 2 ,
148119 byte-27 bytes berkat ovs (1. penggunaan
.count
memungkinkan amap
untuk digunakan; 2. penghapusan redundan0
dalam slice; 3. penggunaanin
daripadamax
4.; disingkat(F==4)*O==2
menjadiF==4>O==2
[sejak golf toF>3>O>1
])Cobalah online!
sumber
d
hanya diperlukan, ini lebih pendek sebagai program lengkap .Pyth, 60 byte
Peta ke peringkat terbalik, 0-12. Coba online di sini , atau verifikasi semua uji sekaligus di sini .
Pemetaan lengkap yang digunakan adalah sebagai berikut:
Ini bekerja dengan memetakan nilai-nilai dadu ke frekuensi, kemudian menghitung nilai beberapa aturan, dan mengambil set maksimum.
sumber
Retina ,
137126 byte-11 byte terima kasih kepada @Neil .
Outputnya adalah 0-diindeks (
0..12
).Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
Ganti setiap 4 dengan 'A':
Urutkan semua digit input (A akan berada di belakang):
Setiap dua baris lainnya menggantikan input dengan output yang diharapkan:
sumber
4
dengan sesuatu di luar kisaran1-6
untuk membuatnya menyortir ke satu ujung secara otomatis (tidak yakin apakah itu membuat perbedaan yang mana Anda menyortir).05AB1E ,
5755 bytePort @Neil 's Charcoal menjawab , karena pendekatan awal saya sudah di 60 byte dan saya belum selesai. Namun, jawaban saya saat ini mungkin bisa golf lagi.
Input sebagai daftar digit.
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
Ruby , 100 byte
Cobalah online!
Bagaimana itu bekerja:
Hitung kemunculan setiap angka dalam larik, tambahkan angka 1s dan tambahkan angka 4s.
Setelah itu, cobalah untuk mencocokkan dengan pola regex yang berbeda.
sumber