본문으로 건너뛰기

siesdart.fly.dev

profile image

(siesdart.fly.dev)

자신만의 철학을 바탕으로 길을 걷는 개발자

AlphaGu

github stars
2018
컴퓨터와 일대일로 대결하는 숫자야구 게임
AlphaGu image

고등학생 시절 만든 숫자야구 게임. 플레이어가 머릿 속으로 임의의 숫자를 정하고, 컴퓨터가 랜덤한 숫자를 정해 질문과 답변을 주고받아 먼저 상대의 숫자를 맞추는 게임이다. 컴퓨터가 플레이어의 숫자를 맞추는 것은, 가능한 모든 숫자 조합을 계산해 리스트에 담은 다음 플레이어의 대답과 모순되는 숫자들을 매 질문마다 제거해나가며 최종적으로 리스트의 길이가 1이 될 때까지 반복하는 방식의 알고리즘을 사용하였다. 이 때 중요한 것은 어떤 숫자를 질문으로 제시하냐인데, 단순히 리스트에 남아있는 숫자 중 랜덤으로 하나를 정하는 것보다 효율적인 질문을 정하는 공식을 찾는데 시간을 많이 소모하였다. 최종적으로 어떤 숫자를 질문으로 제시한다고 가정했을 때 가능한 모든 답변 별 리스트에 남을 숫자 개수의 제곱합이 가장 작은 숫자를 질문으로 선택해 플레이어에게 제시하는 알고리즘을 고안하였다. 이 알고리즘으로 시뮬레이션을 한 결과 평균 5.313번, 최악의 경우에도 8번의 질문으로 플레이어의 숫자를 찾아낼 수 있음을 확인하였다.

  • #C#
  • #WPF
  • #MVVM