크랩은 카지노에서 자주 플레이되는 상당히 간단한 주사위 게임입니다. 당신이 도박꾼이 아니더라도 (나는 아닙니다), 여전히 재미있는 게임입니다. 규칙은 다음과 같습니다.
크랩 스 게임을 시작할 때 소위 라운드 아웃이 있습니다. 플레이어는 두 개의 d6 (6면 주사위)을 굴리고 두 개의 주사위 굴림이 추가됩니다. 결과가 7 또는 11이면 사람이 자동으로 이깁니다 ( 자연이라고합니다 ). 결과가 2, 3 또는 12이면 사람이 자동으로집니다 (이것은 크 래핑 아웃이라고합니다 ). 그렇지 않으면, 결과는로 설정되어있는 점 포인트 라운드.
그 후, 포인트 라운드가 시작됩니다. 포인트 라운드 동안 플레이어는 이전 라운드에서 7 또는 그 / 그녀의 포인트를 굴릴 때까지 2d6을 계속 굴려야합니다. 7을 굴리면집니다. 그들이 포인트를 굴리면 승리합니다.
도전
크랩 게임을 시뮬레이트하는 간단한 프로그램을 구현하십시오. 나올 라운드 중에 사람이 자연 스럽거나 쓰레기를 굴리면 프로그램은 "Natural :"또는 "Crapping out :"을 출력 한 다음 다이 롤을 출력 한 다음 종료해야합니다. 그렇지 않으면 "Point :"다음에 점이 출력됩니다. 그런 다음 포인트 라운드 동안 7 또는 포인트에 도달 할 때까지 모든 다이 롤을 출력해야합니다. 사람이 이기면 출력해야합니다 "Pass"
. 잃어 버리면 출력해야합니다 "Don't Pass"
.
참조 구현
그루비, 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
이것은 code-golf 이므로 가장 짧은 코드가 승리합니다.
(면책 조항 :이 도전은 어떤 방식 으로든 도박을 조장하기위한 것이 아닙니다. 집은 항상 이깁니다.)
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, 6]에서 두 개의 균일 한 랜덤 값을 추가하는 것과 동일한 분포에서 [1, 12]에서 임의의 값을 선택하는 것은 어떻습니까?