숫자야구

1 소개

내기삼아 할 수 있는 게임 내지 초보 프로그래머들의 난관 중 하나.
초보 프로그래머들이 대체로 처음 만들게 되는 '제대로 된' 프로그램 중 하나로, 이름이 숫자야구 게임이라고 해서 뭔가 재밌는 걸 상상했다가 어찌어찌 프로그래밍은 하지만 실행한 후에 크게 좌절하는 경우가 있다(...). 난수 생성과 문자열 입출력, 데이터 중복 검사, 문자열 비교 같은 걸 쓰기 때문에 비교적 간단해도 쓸 건 다 쓰는 예제다 보니까 널리 사용되고 있다. 원제는 bulls and cows라는 게임이다. 프로그래밍 예제를 보려면 이쪽으로.

2 게임 방식

야구이니만큼 야구 용어가 등장한다. 또한 "9회말 2아웃"에 근거해 숫자 제시 횟수를 9번까지 제한하기도 하지만, 잘 하는 사람의 경우 그 전에 끝난다.

각자 3/4자리[1]의 숫자를 임의로 정한 뒤, 서로에게 3/4자리의 숫자를 불러서 결과를 확인한다. 그리고 그 결과를 토대로 상대가 적은 숫자를 예상한 뒤 맞힌다.

  • 사용되는 숫자는 0에서 9까지이다.
  • 숫자는 맞지만 위치가 틀렸을 때는 볼.
  • 숫자와 위치가 전부 맞으면 스트라이크.
  • 숫자와 위치가 전부 틀리면 아웃. "틀렸다"는 게 중요하다.
  • 물론 무엇이 볼이고 스트라이크인지는 알려주지 않는다.
  • 이게임을 아예 모르는 사람을 위해서 하는말인데, 두 숫자가 중복되면 경우의수가 많아져서 그런지 중복숫자를 사용하지 않는것 같다.

예시를 보자면 다음과 같다.

상대가 예상한 숫자가 "320"이라 치자. 아래 표에선 이해를 돕기 위해 숫자에 배경색을 입혀 놓았다.

회차숫자판정
1614아웃
25730S 1B
38301S 1B
43021S 2B
53203S 0B

각 회차별로 설명하자면,

  1. 614 - 들어맞는 숫자가 전혀 없으므로 아웃. 말 그대로 1, 4, 6을 예상 숫자에서 아예 "아웃"시킬 수 있다. 즉 현재 예상숫자는 0, 2, 3, 5, 7, 8, 9.
2. 573 - 3이 있지만 위치가 다르므로 1볼. 물론 게임상으론 어떤 숫자가 맞는지 알 수 없기에 가장 난감하다.
3. 830 - 0이 있고 위치가 맞으며, 3이 있지만 위치가 다르므로 1스트라이크 1볼.
4. 302 - 숫자는 전부 맞지만 위치는 3만 맞고 나머지 둘은 다르므로 1스트라이크 2볼.
5. 320 - 전부 맞으므로 승리.

4자리일 경우에도 마찬가지이다.

3 기타

  • 실제 야구나 비디오게임 야구와는 전혀 관계없다.
  • 대한민국미디어에 정식으로 소개된 것은 퍼즐특급열차의 퍼즐스트라이크가 최초이며, 그 뒤로 한참 동안 TV에서 안 보이다가 무한도전에서 이 게임을 기본 룰로 추격전 게임을 조합한 특집을 방송에서 선보였다. 무한도전 숫자야구 특집 참조. 일본에서는 상기 표기한 누메론이 매주 일요일에 방송 중.
  • 슬리핑 독스의 비밀번호 해킹방식도 단순화된 숫자야구다.
  • 폴아웃 3폴아웃: 뉴 베가스에 등장하는 단말기 해킹도 이 숫자야구의 변형판이다. 숫자가 아닌 알파벳 단어를 대상으로 하는 대신 위치와 문자가 전부 들어맞아야 맞다고 처리하는 스트라이크만 존재한다. 볼은 아웃으로 처리한다.
  • RPG Maker Ace로 만든 숫자야구 게임이 있는데 2인용이 아닌 1인용 게임으로 컴퓨터가 생각하는 숫자를 9번 안에 맞혀야 한다. 다운링크
  • 잘 생각해보면 알겠지만 3 스트라이크 1 볼은 나올 수 없다. 맞혀야 하는 숫자가 전부 들어가는 상태에서 3개의 자리를 맞혔다면 나머지 하나는 무조건 자리가 정해지기 때문.
  1. 이론상 그 이상도 가능하지만 "포볼" 때문인지 5자리 이상은 잘 되지 않는다. 애초에 거기까지 가면 머리가 아프기도 하고(…)