Craps adalah permainan dadu yang cukup sederhana yang sering dimainkan di kasino. Bahkan jika Anda bukan penjudi (yang bukan saya), itu masih merupakan permainan yang cukup menarik. Inilah aturannya:
Pada awal permainan Craps ada apa yang disebut putaran keluar . Pemain menggulung dua d6 (enam sisi die) dan dua gulungan mati ditambahkan. Jika hasilnya 7 atau 11, orang tersebut secara otomatis menang (ini dikenal sebagai alami ). Jika hasilnya adalah 2, 3 atau 12 orang tersebut secara otomatis kehilangan (ini dikenal sebagai crapping out ). Kalau tidak, hasilnya ditetapkan sebagai titik untuk putaran poin.
Setelah ini, babak point dimulai. Selama putaran poin, pemain harus terus menerus menggulung 2 d6s sampai orang tersebut menggulung 7 atau poinnya dari babak sebelumnya. Jika orang tersebut memutar angka 7, mereka kalah. Jika mereka menggulung poin mereka, mereka menang.
Tantangan
Terapkan program sederhana yang mensimulasikan permainan dadu. Jika orang tersebut menggulirkan permainan alami atau omong kosong selama putaran keluar, program harus menampilkan "Alami:" atau "Menghancurkan:" diikuti oleh die-roll dan kemudian keluar. Kalau tidak, itu akan menampilkan "Point:" diikuti oleh titik. Kemudian, selama putaran poin, harus menghasilkan setiap die-roll sampai angka 7 atau poin tercapai. Jika orang tersebut menang, maka ia harus dikeluarkan "Pass"
; jika mereka kehilangan itu harus keluar "Don't Pass"
.
Implementasi Referensi
Groovy, 277 byte
def a={return Math.random()*6+1};int b=a()+a();(b<4||b==12)?{println"Crapping out: "+b}():{(b==7||b==11)?{println"Natural: "+b}():{println"Point: "+b;for(;;){int x=a()+a();println x;(x==7)?{println"Don't Pass";System.exit(0)}():{if(x==b){println"Pass";System.exit(0)}}()}}()}()
Output sampel
Natural: 7
Crapping out: 3
Point: 9
4
8
11
9
Pass
dan
Point: 5
3
7
Don't Pass
Ini kode-golf , jadi kode terpendek menang.
(PERNYATAAN: Tantangan ini tidak dimaksudkan untuk mempromosikan perjudian dengan cara apa pun. Ingat, rumah selalu menang.)
You can't make your program shorter by picking a random number between 1 and 12 for the die roll; it must be two numbers picked between 1 and 6.
- Bagaimana dengan memilih nilai acak dalam [1, 12] dari distribusi yang identik dengan menambahkan dua nilai acak seragam dalam [1, 6]?