Bulls and Cows · 숨겨진 숫자를 스트라이크와 볼로 맞히기
숫자야구는 상대가 숨긴 숫자를 판정만 보고 알아내는 추리 게임입니다. 숨긴 숫자는 1~9 중 서로 다른 숫자 3개(4자리를 고르면 4개)로 되어 있고, 숫자를 하나 부를 때마다 판정을 받습니다.
예를 들어 정답이 381일 때 318을 부르면, 3은 자리까지 맞아 1스트라이크, 1과 8은 숫자만 맞아 2볼이라서 "1S 2B"가 됩니다. 같은 숫자를 두 번 쓸 수 없고, 0은 쓰지 않습니다.
1~9 중 서로 다른 숫자 3개를 순서대로 고르는 방법은 9×8×7 = 504가지, 4자리는 9×8×7×6 = 3,024가지입니다. 첫 수는 무엇을 불러도 확률이 같습니다. 숫자와 자리의 이름만 바꾸면 모든 첫 수가 같은 모양이 되기 때문입니다.
3자리에서 첫 수를 불렀을 때 각 판정이 나올 확률을 504가지를 모두 따져 계산하면 다음과 같습니다.
| 판정 | 남는 후보 | 확률 |
|---|---|---|
| 1B | 180가지 | 35.7% |
| 아웃 | 120가지 | 23.8% |
| 1S | 90가지 | 17.9% |
| 2B | 54가지 | 10.7% |
| 1S 1B | 36가지 | 7.1% |
| 2S | 18가지 | 3.6% |
| 1S 2B | 3가지 | 0.6% |
| 3B | 2가지 | 0.4% |
| 정답 | 1가지 | 0.2% |
판정 하나로 504가지가 많아야 180가지로 줄어듭니다. "아웃"은 허탈해 보이지만, 부른 세 숫자를 통째로 지워 주기 때문에 남은 여섯 숫자로 만드는 120가지만 남는 꽤 쓸모 있는 판정입니다. 4자리에서는 첫 수에 2B(27.8%)가 가장 많이 나오고, 아웃은 4.0%로 드뭅니다.
쉬움은 최근 판정 2개만, 보통은 최근 판정 3개만 기억하고, 그 판정에 맞는 숫자 중 하나를 고릅니다. 앞의 단서를 잊어버리는 사람처럼 두는 셈입니다. 어려움은 모든 판정을 쓰고, 부른 뒤 남는 후보 수가 평균적으로 가장 적어지는 숫자를 계산해서 부릅니다.
AI가 혼자 맞히게 해서 난이도마다 1,000판씩 잰 평균 시도 횟수입니다(2026년 10월 25일 측정).
| 난이도 | 3자리 | 4자리 |
|---|---|---|
| 쉬움 | 8.1번 | 11.2번 |
| 보통 | 5.7번 | 6.7번 |
| 어려움 | 4.7번 (최대 6번) | 5.0번 (최대 7번) |
대결은 운도 크게 작용합니다. AI끼리 1,000판을 붙여 보면 3자리에서 어려움이 보통을 상대로 486승 209무 305패였습니다. 다른 게임의 실측은 AI 난이도 실측 기록에 모아 두었습니다.
방을 만들고 6자리 방 코드나 링크를 보내면 친구와 실시간으로 겨룰 수 있습니다. 방을 만든 쪽이 자릿수를 정하고 먼저 부르며, 다시 하기를 할 때마다 선공이 바뀝니다.
온라인에서는 비밀 숫자를 서버만 압니다. 내가 정한 숫자는 상대 브라우저로 보내지 않고, 상대가 숫자를 부르면 서버가 판정해서 결과만 양쪽에 알려 줍니다. 그래서 개발자 도구를 열어도 상대 숫자를 볼 수 없고, 게임이 끝나야 양쪽 숫자가 공개됩니다. 방 코드 사용법은 온라인 대전 가이드를 참고하세요.