규칙·하는 법
두 사람이 각자 0~9의 숫자 4개를 늘어놓아 4자리 숫자를 정합니다. 같은 숫자는 2번 쓸 수 없습니다. 맨 앞이 0인 숫자(0123 등)도 쓸 수 있습니다. 정한 숫자는 상대에게 보여 주지 않습니다.[1]
선공부터 번갈아 상대의 숫자를 추측해 4자리를 냅니다. 추측도 같은 숫자를 2번 쓰지 않은 4자리로 합니다.
추측을 내면 상대는 스트라이크와 볼의 개수를 답합니다. 추측한 숫자 4개 가운데 상대의 숫자와 비교해 숫자와 자리가 모두 같은 것의 개수가 ‘스트라이크’, 상대의 숫자에 들어 있지만 자리가 다른 것의 개수가 ‘볼’입니다.
예를 들어 상대의 숫자가 1234이고 추측이 1325라면, 1은 자리도 맞으므로 스트라이크, 3과 2는 자리가 다르므로 볼, 5는 상대의 숫자에 없으므로 세지 않습니다. 판정은 1스트라이크 2볼입니다. 스트라이크가 3개이고 4번째 숫자도 상대의 숫자에 들어 있다면, 그 숫자는 남은 한 자리에만 들어갈 수 있으므로 스트라이크가 됩니다. 따라서 3스트라이크 1볼이라는 판정은 없습니다.
상대의 숫자를 그대로 맞히면 판정은 4스트라이크가 됩니다. 맞힐 때까지의 횟수가 적은 쪽이 승리하고, 같은 횟수로 맞히면 무승부입니다. 따라서 선공이 맞혔을 때도 후공에게는 같은 회차의 추측이 1번 남아 있으며, 후공도 맞히면 무승부가 됩니다. 이 페이지에서는 각자 20번 추측해도 승부가 나지 않으면 무승부로 합니다.[2]
‘혼자 맞히기’에서는 AI가 정한 숫자를 30번 안에 맞힙니다.
이 페이지의 조작 방법
게임 시작하는 법
플레이 방식은 게임판 오른쪽(화면 폭이 좁을 때는 게임판 아래)의 버튼으로 선택합니다. ‘AI와 대결’의 ‘초급’·‘중급’·‘고급’ 중 하나를 누르면 선공으로 시작합니다. ‘후공으로 시작하기(중급)’를 누르면 중급 AI가 선공이 됩니다. ‘혼자 맞히기(AI가 출제)’에서는 AI가 정한 숫자를 맞힙니다. ‘이 기기에서 2명이 하기’에서는 기기 1대를 두 사람이 번갈아 사용합니다.
‘친구와 대전(URL 보내기)’을 누르면 방이 만들어지고 URL이 표시됩니다. ‘URL 복사’(지원하는 기기에서는 ‘공유’도 쓸 수 있습니다)로 상대에게 보내 주세요. 상대가 URL을 열고 ‘참가하기’를 누르면 상대가 후공이 되어 게임이 시작됩니다. 상대가 오지 않을 때는 ‘기다리지 않고 AI와 하기’로 AI 대결로 바꿀 수 있습니다. 게임 중에 상대의 연결이 2분 동안 끊긴 채로 있으면 ‘AI와 새 게임 시작하기(지금 게임은 끝납니다)’를 누를 수 있습니다. 방은 아무도 접속하지 않은 상태가 30분 이어지거나, 만든 지 24시간이 지나면 사라집니다.
AI 대결, 이 기기에서 2명이 할 때, 혼자 맞힐 때는 ‘다시 하기’로 같은 플레이 방식의 게임을 처음부터 시작합니다. 친구 대전에서는 게임이 끝난 뒤 ‘선후공 바꿔서 한 판 더’로 다음 게임을 시작합니다. 어느 플레이 방식에서든 ‘플레이 방식 다시 선택하기’로 플레이 방식 선택으로 돌아가고, ‘기권’(혼자 맞힐 때는 ‘포기하고 정답 보기’)으로 게임을 끝냅니다. ‘한 수 무르기’는 AI 대결과 이 기기에서 2명이 할 때만 쓸 수 있고, 되돌릴 수 있는 것은 숫자를 정하는 단계까지입니다. 추측을 내서 판정이 나온 뒤에는 그보다 앞으로 되돌릴 수 없습니다.
숫자 입력
숫자를 정할 때와 추측할 때는 4자리 숫자를 하나씩 입력하고 ‘확정’을 누릅니다. 입력에는 게임판의 내 쪽에 늘어선 카드(0~9·한 글자 지우기·확정)나, 게임판 오른쪽(화면 폭이 좁을 때는 게임판 아래)의 버튼을 사용합니다. 게임판의 카드로 입력한 숫자도 버튼 위의 입력란에 표시됩니다. ‘한 글자 지우기’는 마지막에 입력한 숫자를 지웁니다. 숫자를 정할 때는 ‘무작위’를 누르면 임의의 숫자가 들어갑니다. 버튼을 선택하고 있는 동안에는 키보드의 숫자 키와 Backspace도 쓸 수 있습니다.
이 기기에서 2명이 할 때는 선공, 후공 순서로 숫자를 정합니다. 입력한 숫자는 ●로 가려지고, 눈 모양 버튼으로 표시와 숨김을 전환할 수 있습니다. 숫자를 정하는 동안 다른 한 사람은 화면을 보지 마세요. 숫자가 정해지면 선공부터 번갈아 추측을 입력합니다.
게임판 보는 법
게임판 왼쪽 열이 내 추측, 오른쪽 열이 상대의 추측입니다(이 기기에서 2명이 할 때는 왼쪽이 선공, 오른쪽이 후공). 추측은 건너편부터 차례로 한 행씩 놓이며, 게임판에는 최대 8행까지 놓입니다. 9번째 추측부터는 오래된 행부터 사라지므로, 모든 추측과 판정은 버튼 아래의 ‘추측과 판정’ 표에서 확인하세요.
각 행 오른쪽의 카드가 판정입니다. 카드 왼쪽 금색 부분의 숫자가 스트라이크의 개수(S), 오른쪽 부분의 숫자가 볼의 개수(B)입니다. 4스트라이크로 맞힌 행은 금색 테두리로 둘러싸입니다.
열 위의 받침대에는 그 열에서 맞힐 숫자의 카드가 놓입니다. 상대의 숫자는 뒤집어 놓여 있으며, 게임이 끝나면 공개됩니다. 내가 정한 숫자는 상대 열 위의 받침대에 앞면이 보이게 놓입니다(이 기기에서 2명이 할 때는 두 숫자 모두 뒤집어 놓여 있습니다). 혼자 맞힐 때는 열이 1개이고, 위의 받침대에 AI가 정한 숫자가 뒤집어 놓여 있습니다.
게임판 오른쪽 위의 ‘비스듬히’·‘위에서’ 버튼으로 시점을 바꿀 수 있습니다. 게임판은 드래그로 돌릴 수 있습니다. 마우스 휠이나 두 손가락 조작으로 확대·축소할 수 있습니다.
이기는 요령
첫 번째 추측에서는 판정마다 남는 후보(정답이 될 수 있는 숫자)의 수가 어떤 숫자를 내도 같습니다. 따라서 첫 추측에 유리·불리는 없습니다. 모두 5,040가지인 숫자 가운데 남는 후보가 가장 많은 것은 0스트라이크 1볼일 때로 1,440가지, 0스트라이크 0볼이면 360가지입니다.
2번째 추측에서 첫 번째 추측과 숫자가 겹치지 않는 숫자(첫 번째가 0123이면 4567 등)를 내면, 두 추측의 스트라이크와 볼의 합계로 정답의 숫자가 0~3·4~7·8~9에 몇 개씩 있는지 알 수 있습니다.
스트라이크와 볼의 합계는 추측한 숫자 가운데 정답에 들어 있는 숫자의 개수입니다. 들어 있는 숫자를 알았다면, 그 숫자들의 자리를 바꾼 추측으로 어느 자리에 들어가는지 확인합니다.
후보 가운데서 추측을 고르면 매번 그 추측으로 맞힐 가능성이 있습니다. 예를 들어 첫 번째 추측 0123이 0스트라이크 0볼이라면 0~3은 정답에 없으므로, 후보는 4~9의 숫자 6개로 만드는 360가지입니다. 이 페이지의 AI 중급은 후보 가운데서 무작위로 고르는 방법으로, 평균 약 5.5번 만에 맞힙니다.
후보가 많을 때는 후보가 아닌 숫자를 내는 편이 다음 판정에서 후보를 더 잘게 나눌 수 있는 경우가 있습니다. 맞힐 때까지의 평균 횟수가 가장 적은 전략에서도, 첫 번째 추측 0123이 0스트라이크 3볼이었을 때의 2번째 추측은 후보가 아닌 1435입니다.[2]
대전에서 상대가 다음 회차에 맞힐 것 같을 때나, 후공으로 마지막 한 번의 추측을 낼 때는 후보 가운데서 고릅니다. 후보가 아닌 숫자는 그 회차에 정답이 될 수 없습니다.
숫자야구의 기원과 역사
숫자야구(일본 이름은 히트 앤드 블로)의 규칙은 영어로 Bulls and Cows(황소와 암소)라고 불리는, 종이와 연필로 하는 숫자 맞히기와 같습니다. Bulls and Cows는 Cows and Bulls, Hit & Blow, Cow & Bull 등의 이름으로도 불려 왔습니다. 영어로는 스트라이크를 bull, 볼을 cow라고 부릅니다. 4자리로 하는 경우가 많지만 다른 자릿수로도 할 수 있습니다.[1][6]
초기 컴퓨터에서 하는 버전은 MOO라는 이름으로 퍼졌습니다. 영국의 케임브리지 대학교에서는 1970년 여름에 이미 MOO가 인기였고, 플레이한 사람들의 성적을 순서대로 정리한 순위표도 만들어져 있었습니다. 같은 해 여름, 케임브리지 대학교의 John Larmouth가 미국의 매사추세츠 공과대학교(MIT)를 방문해, MIT의 Jerrold Grochow와 함께 Multics(MIT에서 쓰이던, 많은 이용자가 컴퓨터 1대를 동시에 쓰는 OS)에서 돌아가는 MOO를 만들었습니다. Larmouth가 MIT를 떠난 뒤 Grochow가 Multics 이용자라면 누구나 할 수 있게 하고 순위표도 만들자, 2개월 만에 플레이한 사람이 75명을 넘고 게임은 약 1,000판이 되었습니다.[3][6]
미국의 벨 연구소에서는 Unix를 만든 Ken Thompson이 케임브리지 대학교에서 전해진 MOO에 대해 맞히는 전략을 연구했습니다. Dennis Ritchie의 회상에 따르면 그 결과는 큰 노트에 정리되었고, 첫 페이지에는 “1234를 낸다”라고 적혀 있었으며, 판정의 개수에 따라 다음 추측이 적힌 페이지로 넘어가는 구성이었습니다. 1971년 11월 날짜가 적힌 Unix의 최초 설명서에도 moo가 “잉글랜드에서 들여온 숫자 맞히기 놀이”로 실려 있습니다.[4][5]
몇 번 만에 맞힐 수 있는지는 컴퓨터로 조사되어 있습니다. 1996년에 다나카 데쓰로가 모든 경우를 조사해, 판정에 따라 다음 추측이 정해져 있는 전략 가운데 맞힐 때까지의 평균 횟수가 가장 적은 전략을 구했습니다. 그 평균은 5.213번(5,040가지 숫자의 합계 26,274번)이며, 이 전략으로는 어떤 숫자든 7번 이내에 맞힙니다. 같은 연구에서는 정해진 전략 가운데 두 사람이 대전할 때 가장 강한 것도 구했습니다. 그 전략의 평균은 5.221번으로 최소는 아니지만, 평균이 최소인 전략과 대전하면 승률은 50.2%입니다(무승부는 0.5승으로 계산).[1][2]
출처
- 다나카 데쓰로〈숫자 맞히기 게임 MOO의 최소 질문 전략과 최강 전략〉(《제3회 게임 프로그래밍 워크숍 보고집》, 1996년, 일본어)(새 탭에서 열림)
- Tetsuro Tanaka〈An optimal MOO strategy〉(arXiv, 2022년. 1996년 논문의 영어 번역)(새 탭에서 열림)
- Jerrold M. Grochow〈MOO in Multics〉(Software—Practice and Experience 2권, 1972년)(새 탭에서 열림)
- Dennis Ritchie〈Ken, Unix and Games〉(ICGA Journal 24권 2호, 2001년)(새 탭에서 열림)
- The Unix Heritage Society〈V1/man/man6/moo.6〉(Unix 제1판의 설명서, 1971년)(새 탭에서 열림)
- 위키백과(영어판)〈Bulls and cows〉(2026년 9월 28일 열람)(새 탭에서 열림)
자주 묻는 질문
스트라이크와 볼은 어떻게 세나요?
추측한 숫자 가운데 정답과 숫자도 자리도 맞는 것이 스트라이크, 숫자는 정답에 들어 있지만 자리가 다른 것이 볼입니다. 정답이 1234이고 추측이 1325라면 1이 스트라이크, 3과 2가 볼이며, 판정은 1스트라이크 2볼입니다. 5는 정답에 들어 있지 않으므로 세지 않습니다.
평균 몇 번이면 맞힐 수 있나요?
판정에 따라 다음 추측이 정해져 있는 전략 가운데 평균 횟수가 가장 적은 것은 평균 5.213번이며, 어떤 숫자든 7번 이내에 맞힙니다(1996년 다나카 데쓰로의 계산). 이 페이지의 AI는 고급이 평균 약 5.22번, 중급이 약 5.5번, 초급이 약 8.8번 만에 맞힙니다.
혼자서도 할 수 있나요?
할 수 있습니다. ‘혼자 맞히기(AI가 출제)’를 선택하면 AI가 정한 숫자를 30번 안에 맞힙니다. 30번 안에 맞히지 못하면 정답이 표시됩니다. 도중에 ‘포기하고 정답 보기’를 누르면 정답이 게임판에 표시됩니다.
같은 숫자를 2번 쓴 숫자나 0으로 시작하는 숫자도 쓸 수 있나요?
같은 숫자를 2번 쓴 숫자는 쓸 수 없습니다. 숫자를 정할 때도 추측할 때도 마찬가지입니다. 0으로 시작하는 숫자(0123 등)는 쓸 수 있습니다. 쓸 수 있는 숫자는 0~9에서 서로 다른 숫자 4개를 골라 늘어놓은 5,040가지입니다.
친구와 대전할 때 내 숫자가 상대에게 보이나요?
보이지 않습니다. URL을 보내 친구와 대전할 때는 판정을 대전 서버가 계산하며, 상대의 화면에는 내 숫자를 가린 상태만 전달됩니다. 숫자는 게임이 끝나면 양쪽 화면에서 공개됩니다. 이 기기에서 2명이 할 때는 숫자를 정하는 동안 입력한 숫자가 ●로 가려집니다. AI 대결에서도 AI는 내 숫자를 보지 않고 판정만으로 추측합니다.
3자리나 5자리로도 할 수 있나요?
이 페이지에서는 4자리만 할 수 있습니다. 종이와 연필로 할 때는 3자리나 5자리 등 다른 자릿수로도 같은 규칙으로 할 수 있습니다.
게임 통계 전송
게임의 시작과 끝, 친구 대전의 연결 성공 여부, 3D 표시 실패 등을 이 사이트의 서버로 전송하고 있습니다. 어떤 게임이 끝까지 플레이되는지, 어떤 기기에서 표시나 연결에 실패하는지를 조사해 버그 수정과 게임 개선에 사용합니다. 전송하지 않으려면 아래 스위치를 꺼 주세요.
전송하는 정보
게임의 종류, 플레이 방식(AI 대결·이 기기에서 교대·1인용·친구 대전), AI 난이도, 게임 설정(오목과 체커의 규칙·루도와 다이아몬드 게임의 인원), 결과, 총 수, 게임 시간의 구분, 친구 대전의 연결 성공 여부와 재연결 횟수, 3D 표시 실패와 렌더링 속도의 구분, 기기의 종류(스마트폰인지 여부·메모리와 코어 수의 구분), 브라우저와 OS의 종류.
전송하지 않는 정보
방 ID, 둔 수와 게임판 상태, 숫자야구의 숫자, IP 주소, GPU의 기종명. 전송 대상은 이 사이트의 서버뿐이며, 외부 서비스에는 넘기지 않습니다. 기록은 30일이 지나면 삭제합니다.
기록을 다루는 방식과 광고·접속 분석에 따른 외부 전송은 개인정보 처리방침에 적었습니다.