숫자야구란
숫자야구는 상대가 정한 비밀 수를 추측하고, 돌아오는 판정을 단서로 범위를 좁혀 가며 맞히는 두 사람용 추리 게임입니다. 종이와 연필만 있으면 할 수 있어 널리 알려졌고, 판정을 야구 용어인 스트라이크·볼·아웃으로 부르기 때문에 이런 이름이 붙었습니다. 보통 서로 다른 숫자 3개나 4개로 된 수를 쓰고, 0을 쓰지 않기도 합니다.
영어권에서는 같은 게임을 Bulls and Cows(황소와 암소)라고 부르고, 스트라이크를 bull, 볼을 cow라고 합니다. 영어 위키백과에 따르면 이 게임은 1970년대 초에 나온 보드게임 마스터마인드(Mastermind)보다 오래되었고, 1970년 여름 이전 영국 케임브리지 대학 컴퓨터 연구소의 프랭크 킹(Frank King)이 만든 「MOO」가 첫 컴퓨터판으로 꼽힙니다. MOO는 1972년 MIT의 멀틱스(Multics)로 옮겨졌고 벨 연구소의 유닉스에도 들어갔습니다.
마스터마인드는 숫자 대신 색깔 핀을 쓰고 같은 색을 여러 번 쓸 수 있다는 점이 다르지만, "자리까지 맞은 개수"와 "색만 맞은 개수"를 알려 주는 판정 방식은 숫자야구와 같습니다. 이 페이지의 게임은 한 사람이 컴퓨터와 하도록 만들어, 컴퓨터가 정한 수를 맞히는 모드와 내가 정한 수를 컴퓨터가 맞히는 모드를 모두 넣었습니다.
규칙과 판정
- 정하는 쪽은 서로 다른 숫자로 된 수를 비밀로 정합니다. 같은 숫자는 두 번 쓸 수 없습니다.
- 맞히는 쪽은 같은 자릿수의 수를 부릅니다. 부르는 수도 서로 다른 숫자여야 합니다.
- 정하는 쪽은 부른 수를 비밀 수와 비교해 판정을 알려 줍니다.
- 스트라이크(S): 숫자와 자리가 모두 맞은 개수
- 볼(B): 숫자는 비밀 수에 있지만 자리가 다른 개수
- 아웃: 겹치는 숫자가 하나도 없음(0S 0B)
- 모든 자리가 스트라이크(3자리면 3S)가 되면 맞힌 것입니다. 적게 부르고 맞힐수록 잘한 것입니다.
판정은 "1S 2B"처럼 스트라이크 개수와 볼 개수를 함께 말하고, 한쪽이 0이면 "2S", "1B"처럼 줄여 말합니다. 어느 숫자가 스트라이크인지는 알려 주지 않는다는 점이 이 게임의 핵심입니다. 아래는 비밀 수가 472일 때의 판정 예시입니다.
| 부른 수 | 판정 | 이유 |
|---|---|---|
| 472 | 3S | 세 숫자 모두 자리까지 맞음 → 정답 |
| 478 | 2S | 4·7은 자리까지 맞고 8은 없음 |
| 457 | 1S 1B | 4는 제자리, 7은 있지만 자리가 다름, 5는 없음 |
| 742 | 1S 2B | 2는 제자리, 7·4는 있지만 자리가 다름 |
| 724 | 3B | 세 숫자가 모두 있지만 자리가 전부 다름 |
| 415 | 1S | 4만 제자리, 1·5는 없음 |
| 285 | 1B | 2는 있지만 자리가 다름, 8·5는 없음 |
| 139 | 아웃 | 겹치는 숫자가 하나도 없음 |
스트라이크와 볼을 더한 값은 자릿수를 넘을 수 없습니다. 또 3자리에서 2S 1B(4자리에서는 3S 1B)는 나올 수 없는 판정입니다. 한 자리만 빼고 모두 스트라이크인데 남은 숫자도 비밀 수에 있다면, 그 숫자가 갈 곳은 남은 한 자리뿐이라 스트라이크가 되기 때문입니다.
설정과 경우의 수
비밀 수가 될 수 있는 경우의 수는 쓸 수 있는 숫자 개수에서 자릿수만큼을 순서대로 뽑는 순열의 수입니다. 첫 자리에 올 수 있는 숫자가 9개(1~9)라면 둘째 자리는 첫 자리에 쓴 숫자를 빼고 8개, 셋째 자리는 7개라서 9 × 8 × 7 = 504가지입니다. 계산식은 팩토리얼로 9! ÷ 6!과 같습니다.
| 자릿수 | 숫자 | 계산 | 경우의 수 | 맨 앞 0 금지 시 |
|---|---|---|---|---|
| 3자리 | 1~9 | 9 × 8 × 7 | 504 | — |
| 3자리 | 0~9 | 10 × 9 × 8 | 720 | 648 |
| 4자리 | 1~9 | 9 × 8 × 7 × 6 | 3,024 | — |
| 4자리 | 0~9 | 10 × 9 × 8 × 7 | 5,040 | 4,536 |
이 게임은 0~9를 고르면 맨 앞 0도 허용합니다(012, 0582 등). 숫자야구의 수는 크기를 따지는 수가 아니라 숫자를 늘어놓은 것이어서 0이 맨 앞에 와도 판정에 문제가 없고, Bulls and Cows 분석에서 흔히 말하는 4자리 5,040가지도 이 기준입니다. 친구와 맨 앞 0을 금지하기로 했다면 표의 오른쪽 값처럼 경우의 수가 조금 줄어듭니다.
같은 숫자 조합이라도 자리가 다르면 다른 수라는 점에서 로또 6/45와 반대입니다. 로또는 번호의 순서를 따지지 않는 조합이라 45개 중 6개를 고르는 경우가 8,145,060가지이고, 숫자야구는 순서를 따지는 순열이라 같은 숫자 세 개로도 6가지 수를 만들 수 있습니다.
게임 하는 법
내가 맞히기
- 자릿수와 쓰는 숫자를 고릅니다. 컴퓨터는 첫 수를 확인하는 순간 브라우저의 암호학적 난수(crypto)로 비밀 수를 정합니다.
- 화면의 숫자 키패드나 키보드로 수를 입력하고 확인(Enter)을 누릅니다. 같은 숫자를 두 번 누르거나 자릿수가 모자라면 안내가 나오고, 이미 부른 수는 다시 부를 수 없습니다.
- 판정이 추측 기록에 쌓입니다. 모든 자리가 스트라이크가 되면 몇 번 만에 맞혔는지 나오고 기록이 저장됩니다.
- 도저히 모르겠으면 포기를 두 번 눌러 정답을 볼 수 있습니다. 포기한 판은 기록하지 않습니다.
두 가지 도움 기능이 있습니다. 남은 가능한 수 보기를 켜면 지금까지의 판정을 모두 만족하는 수가 몇 개인지 기록 옆에 나옵니다. 스스로 추리하는 재미를 해치지 않도록 처음에는 꺼져 있습니다. 숫자 메모판은 숫자마다 "없음(×)"과 "있음(○)"을 표시해 두는 칸으로, 누를 때마다 빈칸 → 없음 → 있음 순서로 바뀌고 키패드에도 같은 표시가 나타납니다. 아웃이 나온 숫자를 지워 두는 데 편합니다.
컴퓨터가 맞히기
- 서로 다른 숫자로 된 수를 마음속으로 정해 종이에 적어 두고 시작을 누릅니다. 정한 수는 입력하지 않습니다.
- 컴퓨터가 부른 수를 내 수와 비교해 스트라이크 개수와 볼 개수를 고르고 알려 주기를 누릅니다. 아웃이면 0과 0을 고릅니다.
- 컴퓨터는 판정과 모순되지 않는 후보를 남기고 다음 수를 부릅니다. 남은 후보 수가 기록 옆에 나오고, 12개 이하로 줄면 후보 목록도 보여 줍니다.
- 판정을 잘못 알려 줬다면 되돌리기로 고칩니다. 판정끼리 모순이 생기면 "입력한 판정 중 틀린 것이 있습니다"라는 안내가 나오고, 정한 수를 입력하면 어느 판정이 틀렸는지 표시해 줍니다.
푸는 요령
첫 추측은 무엇이든 같습니다. 아무 정보도 없을 때는 123을 부르든 947을 부르든 숫자 이름과 자리만 바뀔 뿐, 판정별로 남는 경우의 수가 똑같습니다. 3자리 1~9에서 123을 부르면 판정에 따라 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% |
| 3S | 1 | 0.2% |
가장 흔한 판정은 1B(180가지)이고, 운 좋게 1S 2B나 3B가 나오면 후보가 두세 개로 줄어듭니다. 흔히 아웃이 가장 좋은 판정이라고 하는데, 3자리에서는 아웃 뒤에도 120가지가 남아 1S(90)나 2B(54)보다 많습니다. 그래도 아웃이 반가운 이유는 부른 숫자 세 개를 통째로 지울 수 있어 사람이 추리하기 쉽기 때문입니다. 4자리 1~9에서는 1234가 아웃이면 남은 숫자 5개 중 4개를 쓰는 120가지만 남는데, 가장 흔한 2B(840가지)나 1B(720가지)에 비하면 훨씬 적습니다.
사람이 풀 때는 숫자를 먼저 가리고 자리는 나중에 정하는 소거법이 편합니다. 처음 두세 번은 서로 겹치지 않는 숫자로 불러 어떤 숫자가 몇 개 있는지 알아내고, 그다음 숫자를 바꿔 넣거나 자리를 옮겨 보며 스트라이크 위치를 확정합니다. 스트라이크가 0인 판정에서는 부른 숫자가 모두 그 자리에는 없다는 것도 알 수 있으니, 메모판과 함께 적어 두면 실수가 줄어듭니다. 아래는 비밀 수 584를 이런 방식으로 푼 예입니다.
| 회 | 부른 수 | 판정 | 남은 수 | 알게 된 것 |
|---|---|---|---|---|
| 1 | 123 | 아웃 | 120 | 1·2·3은 없다. 4~9 중 3개로 된 수 |
| 2 | 456 | 2B | 27 | 4·5·6 중 2개가 있고 둘 다 자리가 다르다 |
| 3 | 789 | 1S | 9 | 나머지 1개는 7·8·9 중 하나이고 제자리에 있다 |
| 4 | 468 | 2B | 3 | 584, 649, 685만 남는다 |
| 5 | 584 | 3S | — | 정답 |
3회까지 불러 보면 4·5·6에서 두 개, 7·8·9에서 한 개가 들어 있다는 것까지 알 수 있습니다. 4회의 468은 4가 첫째 자리에 올 수 없어 정답일 수 없는 수지만, 후보 9개를 3개로 줄였습니다. 5회의 584는 틀렸더라도 나머지 두 후보와 판정이 달라(649라면 1B, 685라면 1S 1B) 다음 차례에 확정할 수 있는 수였습니다. "남은 가능한 수 보기"를 켜면 이 표의 "남은 수"를 게임 안에서 그대로 볼 수 있습니다.
컴퓨터의 전략과 최대 횟수
"컴퓨터가 맞히기"의 컴퓨터는 미니맥스(minimax) 전략을 씁니다. 부를 수 있는 모든 수에 대해 판정별로 후보가 몇 개씩 남을지 세어 보고, 가장 운이 나쁜 판정이 나와도 남는 후보가 가장 적은 수를 고릅니다. 그 값이 같으면 평균적으로 적게 남는 수, 그래도 같으면 정답일 수 있는 후보를 먼저 부릅니다. 첫 추측은 어느 수나 같으므로 계산하지 않고 정하며, 매 판 숫자를 무작위로 바꿔 써서 첫 추측이 달라집니다.
이 때문에 컴퓨터는 가끔 정답일 수 없는 수를 부릅니다. 3자리 1~9에서 123이 2S라면 12□·1□3·□23 꼴의 18가지가 남는데, 후보인 124를 부르면 운이 나쁠 때 10가지가 남지만 후보가 아닌 134를 부르면 어떤 판정이 나와도 5가지 이하로 줄어듭니다. 한 번을 버리는 것처럼 보여도, 후보 안에서만 고르게 하면 3자리 1~9에서 7번이 걸리는 수가 18개 생기는 반면 이 방식은 모두 6번 안에 끝납니다.
아래 표는 설정마다 가능한 비밀 수를 하나도 빼지 않고 이 컴퓨터에게 맞혀 보게 한 결과로, 사이트의 자동 테스트로 확인한 값입니다. 정답을 부른 차례까지 셉니다.
| 설정 | 비밀 수 | 가장 오래 걸린 경우 | 평균 |
|---|---|---|---|
| 3자리 1~9 | 504 | 6번 | 약 4.75번 (2,396 ÷ 504) |
| 3자리 0~9 | 720 | 6번 | 약 5.12번 (3,686 ÷ 720) |
| 4자리 1~9 | 3,024 | 7번 | 약 5.00번 (15,128 ÷ 3,024) |
| 4자리 0~9 | 5,040 | 7번 | 약 5.34번 (26,921 ÷ 5,040) |
3자리 1~9의 504가지는 1번 1개, 2번 5개, 3번 27개, 4번 115개, 5번 292개, 6번 64개로 모두 6번 안에 끝났습니다. 영어 위키백과는 4자리 0~9에서 어떤 수든 7번 안에 맞힐 수 있고, 평균을 가장 적게 하는 전략은 약 5.21번이라고 소개합니다. 이 컴퓨터는 최대 횟수를 줄이는 쪽을 먼저 따지기 때문에 최대 7번은 같고 평균은 약 5.34번으로 조금 많습니다.
친구와 종이로 할 때
- 두 사람이 각자 비밀 수를 적어 뒤집어 두고, 번갈아 한 번씩 상대의 수를 부릅니다. 더 적게 불러 맞힌 사람이 이깁니다. 먼저 부른 사람이 맞혔을 때 상대에게도 같은 횟수의 기회를 주고, 같은 횟수에 둘 다 맞히면 비기는 것으로 하면 공평합니다.
- 시작 전에 자릿수, 0 사용 여부, 맨 앞 0 허용 여부를 정해 둡니다. 이 게임의 설정도 같은 기준입니다.
- 야구의 9이닝에 맞춰 9번 안에 맞혀야 한다는 규칙을 더하기도 합니다. 이 게임의 컴퓨터가 3자리를 6번, 4자리를 7번 안에 모두 맞히는 것을 보면 9번은 넉넉한 편이어서, 4자리로 하면 조금 더 빠듯해집니다.
- 가장 흔한 문제는 판정 실수입니다. 판정을 한 번 잘못 알려 주면 상대의 추리가 모두 꼬이므로, 부른 수와 판정을 표로 적어 두고 판정하기 전에 한 번 더 비교하는 편이 좋습니다.
자주 묻는 질문
숫자야구에서 0을 써도 되나요? 맨 앞에 0이 와도 되나요?▾
정하기 나름입니다. 1~9만 쓰는 방식과 0~9를 쓰는 방식이 모두 흔하고, 이 게임은 둘 다 고를 수 있습니다. 0을 쓸 때는 012처럼 맨 앞 0도 허용합니다. 수가 아니라 숫자 나열로 보는 Bulls and Cows의 방식이고, 4자리 0~9의 경우의 수 5,040가지도 이 기준입니다. 맨 앞 0을 금지하면 3자리는 648가지, 4자리는 4,536가지가 됩니다.
같은 숫자를 두 번 써도 되나요?▾
안 됩니다. 비밀 수와 추측 모두 서로 다른 숫자로만 만듭니다. 112처럼 같은 숫자가 들어간 수를 입력하면 오류 안내가 나오고 기록에 들어가지 않습니다. 같은 색을 여러 번 쓸 수 있는 것은 보드게임 마스터마인드 쪽 규칙입니다.
아웃은 정확히 무슨 뜻인가요? "1S 1B 1O"처럼 쓰기도 하던데요.▾
이 게임에서 아웃은 스트라이크와 볼이 모두 0인 경우, 즉 부른 숫자가 정답에 하나도 없다는 뜻입니다. 모임에 따라 정답에 없는 숫자 개수를 O로 세어 "1S 1B 1O"처럼 말하기도 하는데, O의 개수는 자릿수에서 S와 B를 뺀 값이라 담긴 정보는 같습니다.
첫 추측은 어떤 수가 좋나요?▾
첫 추측은 무엇을 불러도 같습니다. 아직 아무 정보가 없어서 123을 부르든 947을 부르든 숫자 이름과 자리만 바뀔 뿐 판정별로 남는 경우의 수가 똑같기 때문입니다. 차이는 둘째 추측부터 생깁니다. 보통은 첫 추측과 겹치지 않는 숫자로 둘째 추측을 해서 어떤 숫자가 있는지부터 가립니다.
몇 번 만에 맞히면 잘한 건가요?▾
기준으로 삼을 만한 것은 이 게임의 컴퓨터 기록입니다. 컴퓨터는 남은 후보를 모두 세어 가며 수를 골라 3자리 1~9의 504가지를 모두 6번 안에, 평균 약 4.75번에 맞힙니다(4자리 0~9는 최대 7번, 평균 약 5.34번). 사람이 머릿속으로 이 횟수에 가깝게 맞혔다면 매우 잘 푼 것입니다. 이 게임은 설정별 최소·평균 횟수를 기록해 두므로 자기 기록과 비교해 보세요.
컴퓨터가 정답일 수 없는 수를 부르는 이유는 무엇인가요?▾
남은 후보를 더 고르게 나누기 위해서입니다. 예를 들어 3자리 1~9에서 123이 2S이면 후보가 18개 남는데, 후보인 124를 부르면 운이 나쁠 때 10개가 남고, 후보가 아닌 134를 부르면 어떤 판정이 나와도 5개 이하로 줄어듭니다. 컴퓨터는 "가장 많이 남는 경우"가 가장 작은 수를 고르므로 이런 수를 부르기도 하고, 그때는 화면에 따로 알려 줍니다.
컴퓨터가 맞히기에서 판정을 잘못 입력했어요.▾
되돌리기를 누르면 마지막 판정을 지우고 그 추측으로 돌아갑니다. 여러 번 되돌릴 수 있습니다. 판정끼리 모순이 생겨 남은 후보가 0개가 되면 "입력한 판정 중 틀린 것이 있습니다"가 나오고, 그때 정한 수를 입력하면 몇 번째 판정이 틀렸는지 기록에 표시해 줍니다.
기록은 어디에 저장되나요?▾
내가 맞히기에서 맞힌 판의 최소 횟수·평균 횟수·판 수가 설정(자릿수와 0 사용 여부)별로 이 브라우저의 저장소(localStorage)에만 남고 서버로는 전송되지 않습니다. 포기한 판은 기록하지 않습니다. 브라우저 데이터를 지우거나 다른 기기·시크릿 창에서 열면 보이지 않으며, "기록 지우기"로 직접 지울 수도 있습니다.
역사는 영어 위키백과 「Bulls and cows」를 참고했습니다. 경우의 수와 컴퓨터의 최대·평균 횟수는 이 게임의 코드로 모든 비밀 수를 직접 계산한 값입니다. 게임은 브라우저 안에서만 동작하며, 기록은 이 브라우저에만 저장되고 서버로 전송되지 않습니다.