3일차 게임은 시크릿 넘버입니다.


이 게임은 플레이어들이 1~100 사이의 고유 번호를 뽑은 뒤 본인과 타인의 연산 결과를 토대로 본인의 고유 번호를 맞추는 게임입니다.


게임에서 사용할 수 있는 연산 카드는 다음과 같습니다.


+: 두 숫자의 더하기 결과를 알려줍니다.

X: 두 숫자의 곱셈 결과를 1의 자리만 알려줍니다.

%: 큰 수에서 작은 수를 나눈 몫을 알려줍니다.

0: 두 수 사이에 있는 수 중 뒷자리가 0인 수를 알려줍니다.


플레이어들은 해당 연산 결과를 토대로 내 번호를 알아내야 합니다.



* 계산의 편의를 위해 룰을 조금 수정해서 더하기 결과가 1~20인 경우와 180~199인 경우를 없애겠습니다.

* 분석 1편에서는 두 플레이어가 서로 결과를 공유하는 상황만 확인하겠습니다.



- 0. 전체 경우의 수


A 플레이어는 1~100까지 선택할 수 있고

B 플레이어는 A 플레이어가 가져간 카드를 제외한 나머지 카드를 선택할 수 있으므로

총 경우의 수는 9900입니다.


A와 B가 가질 수 있는 모든 경우의 수를 dataframe에 넣은 뒤 각 연산의 결과를 넣으면 다음과 같습니다.




- 1. 각 연산이 가지는 정보량


9900으로 시작해서 각 연산들이 경우의 수를 얼마나 줄여줄 수 있는지를 확인했습니다.





1-1. 더하기 연산


가장 좋은 결과: 3, 199 (경우의 수 2)

가장 안 좋은 결과: 101 (경우의 수 100)


더하기 결과는 매우 작거나 매우 클 경우 유리해지기 때문에 본 게임에서는 1~20, 180~199를 묶어서 알려주었습니다.


1-2. 곱하기 연산


가장 좋은 결과: 1 (경우의 수 380), 3 (경우의 수 400), 7 (경우의 수 400) 입니다.

가장 안 좋은 결과: 0 (경우의 수 2690)


곱하기 연산의 경우 (0, n), (5, 2n)의 연산 결과가 모두 0이기 때문에 0의 빈도가 가장 높습니다.


1-3. 나누기 연산


나누기 연산은 절반에 가까운 빈도로 1이 나옵니다. 본인의 고유번호가 작은 수이면 나누기 연산에서 경우의 수를 많이 줄일 수 있기 때문에 상당히 유리합니다.


1-4. 0 연산


0 연산은 서로의 수가 크게 차이 날 수록 유리합니다.



- 2. 2명이서 연산을 하면 경우의 수를 몇까지 줄일 수 있는가?


총 9900가지의 경우의 수를 모두 계산해 본 결과, 2명이 4가지 종류의 모든 연산을 했을 때 줄일 수 있는 경우의 수는 다음과 같습니다.


내 고유번호 경우의 수가 8개로 좁혀지는 A, B 경우의 수: 272개

내 고유번호 경우의 수가 6개로 좁혀지는 A, B 경우의 수: 552개

내 고유번호 경우의 수가 4개로 좁혀지는 A, B 경우의 수: 3292개

내 고유번호 경우의 수가 2개로 좁혀지는 A, B 경우의 수: 5784개


합계: 9900



흥미로운건 4가지 연산을 다 해도 운이 안 좋으면 내 숫자는 8개 중 1개가 된다는 점입니다.


예를 들어서

A+B = 121

A*B = 8

A/B = 1

A0B = 1


이 결과를 만족하는 A, B는 다음과 같이 8개입니다.