Крэпс - довольно простая игра в кости, в которую часто играют в казино. Даже если вы не игрок (а я нет), это все равно довольно интересная игра. Вот правила:
В начале игры в Крэпс есть то, что называется раундом выхода . Игрок бросает два d6s (шестигранный кубик), и добавляются два броска кубика. Если результат 7 или 11, человек автоматически выигрывает (это называется естественным ). Если результат равен 2, 3 или 12, человек автоматически проигрывает (это называется выкидышем ). В противном случае, результат устанавливается как точка для раунда.
После этого точка раунд начинается. В течение раунда очков игрок должен непрерывно бросать 2 d6s, пока человек не бросит 7 или его / ее очко из предыдущего раунда. Если человек бросает 7, они проигрывают. Если они бросают свою точку зрения, они выигрывают.
Вызов
Реализуйте простую программу, которая имитирует игру в кости. Если человек выбрасывает натуральный или дурацкий во время раунда выхода, программа должна вывести «Natural:» или «Crapping out:», затем бросить кубик и затем выйти. В противном случае он должен вывести «Point:», а затем точку. Затем, во время раунда, он должен выводить каждый бросок кубика, пока не будет достигнута 7 или точка. Если человек выигрывает, он должен выходить "Pass"
; если они проиграют, это должно вывести "Don't Pass"
.
Реализация эталона
Groovy, 277 байт
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)}}()}}()}()
Пример выходов
Natural: 7
Crapping out: 3
Point: 9
4
8
11
9
Pass
и
Point: 5
3
7
Don't Pass
Это код-гольф , поэтому выигрывает самый короткий код.
(ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Эта задача не предназначена для продвижения азартных игр в любом случае. Помните, дом всегда побеждает.)
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.
- Как насчет выбора случайного значения в [1, 12] из распределения, идентичного добавлению двух равномерных случайных значений в [1, 6]?