숫자야구란?
숫자야구는 램덤으로 생성한 자연수를 맞추는 게임이다. 주로 세라지 및 네자리 자연수를 맞추된다.
랜덤으로 생성하는 자연수를 만들때 주의 할 점은 각 자리수의 숫자는 모두 다른 수로 이루어져야한다. 예를 들어 112 같은 경우 1이 두번 등장하므로 안된다. 490처럼 모두 다른 숫자를 사용해야하며, 012 같은 숫자는 본 예시에서는 안되는 것으로 게임을 만들었다. (실제로 저렇게 해도 되는건지는 잘 모르겠다)
정답을 123이라고 할때, 이 숫자를 맞추는 방법은
우선, 아무 세자리 자연수를 찍는다. 513이라고 찍어보겠다.
513과 정답인 123을 비교해보면 1과 3은 둘다 가지고 있다. 3의 경우 위치도 둘다 1의 자리수로 동일하다.
이 경우 컴퓨터는 1S1B이라고 알려준다. S는 야구에서 스트라이크로 본 게임에서는 위치와 숫자를 모두 맞힌 경우를 나타낸다. B는 야구에서 볼로 본 게임에서는 숫자는 맞았지만 위치는 맞지 않는 경우를 나타낸다. 위 예시에서 숫자는 맞았지만, 위치가 틀린경우는 1 한개 뿐이므로 1B이라고 알려주었으며, 숫자와 위치가 맞은 경우는 3 한개 뿐이므로 1S라고 알려주어 최종적으로 1S1B라고 알려준다.
그럼 플레이어는 513은 1S1B라는 정보를 가지고 다음 추측을 한다. 이때 426을 찍었다고 해보자. 이렇게 되면 2는 위치와 숫자가 모두 맞았으므로 1S0B이다(나머지 숫자는 모두 틀렸다). 이 두번의 추측을 통해 정답은 513과 426를 조합해서 만들 수 있는 숫자라는 사실을 알 수 있다. (789 중에는 정답이 없다는 뜻)
이런 식으로 여러번의 추측을 하면서 원래의 정답을 맞추는 게임이다. 시도 횟수가 적을 수록 게임을 더 잘 플레이한 것이다.
아래는 만들어본 숫자야구 게임 파일이다. 숫자야구를 만들기 위해서는 간단한 함수들과 약간의 매크로 사용이 필요하다.
'엑셀 & VBA' 카테고리의 다른 글
1-4. 숫자야구 - 중복된 확인 (if) (0) | 2021.06.01 |
---|---|
1-3. 숫자야구 자리수 별로 숫자 뽑아내기 (Mod) (0) | 2021.05.28 |
1-2. 숫자야구 난수 생성(randbetween) (0) | 2020.12.28 |
1-1. 숫자야구 만들기 (0) | 2020.12.28 |
한셀 & VBA 게시판 설명 (0) | 2020.12.27 |