반응형
팀원분과 한번 만나서 상의를 해보면서 기본적인 프로그램 틀을 짠 것 같습니다.
우선 기본세팅에 대해 대전이 가능한 인공지능을 구현해보았습니다.
알고리즘은 이 분의 알고리즘을 그대로 파이썬으로 구현해보았습니다.
보통 4번정도만에 정답을 맞추더라구요
소스코드는 다음과 같이 짜보았습니다.
from random import *
nums = list()
for i in range(1,10):
for j in range(1,10):
if i == j:
continue
for k in range(1,10):
if k==i or k==j:
continue
nums.append([i,j,k])
result = (-1,-1)
while result != (3,0):
cpu_try = nums[randint(0, len(nums) - 1)]
print('cpu_try : ',cpu_try)
st, bl = map(int, input().split()) # send result
result = (st, bl) # 튜플로 묶어서 결과 처리
i = 0
while i != len(nums):
t_st = 0; t_bl = 0
for j in range(3):
if cpu_try[j] not in nums[i]: # out
pass
elif cpu_try[j] in nums[i] and cpu_try[j] == nums[i][j]: # strike
t_st += 1
else: # ball
t_bl += 1
if result == (t_st, t_bl):
i += 1
else:
nums.remove(nums[i])
if len(nums) == 0:
print('어딘가에서 잘못된 답을 넣었습니다.')
print(nums[0])
컴퓨터가 시도한 답에 대해
'스트라이크 개수' '볼 개수'
형태로 띄어쓰기를 통해 숫자만으로 답을 알려줍니다.
룰은 중복 불가능, 1부터 9까지의 숫자, 3자리 숫자 로 하였습니다.
플레이어가 직접 컴퓨터에게 답을 알려주는 형식이다보니, 중간에 실수로 답을 잘못 알려줄 수도 있습니다.
그런 잘못이 누적되어 답을 도출 할 수 없을 경우 안내메세지를 출력하도록 하였습니다.
반응형
'팀 프로젝트 > [2020] 인공지능 숫자야구' 카테고리의 다른 글
[팀프로젝트 01] 인공지능 숫자야구 만들기(4) : tkinter 입히기 (0) | 2020.06.03 |
---|---|
[팀프로젝트 01] 인공지능 숫자야구 만들기(3) : 알고리즘 수정 (0) | 2020.06.02 |
[팀프로젝트 01] 인공지능 숫자야구 만들기(1) : 주제 구상 (0) | 2020.05.24 |