Algorithm(CodeTree, Python)/완전탐색1
[코드트리 자리 수 단위로 완전탐색] 오목 python
by kurooru
2022. 12. 1.
# table 입력
table = [
list(map(int, input().split()))
for _ in range(19)
]
# 함수들
# row_five(x, y)
def row_five(x, y):
# 범위 내에 없으면 탈락
if y >= 15:
return False
# flag
flag = table[x][y]
# 연속 다섯개중
for i in range(1, 5):
# 다른 게 있으면,
if table[x][y+i] != flag:
# 실패
return False
# 다 통과하면 성공
return True
# col_five(x, y)
def col_five(x, y):
# 범위 내에 없으면 탈락
if x >= 15:
return False
# flag
flag = table[x][y]
# 연속 다섯개 중
for i in range(1, 5):
# 다른 게 있으면
if table[x+i][y] != flag:
# 실패
return False
# 다 통과하면 성공
return True
# dia_five_1(x, y)
def dia_five_1(x, y):
# 범위 내에 없으면 탈락
if x >= 15 or y >= 15:
return False
# flag
flag = table[x][y]
# 연속 다섯개 중
for i in range(1, 5):
# 다른 게 있으면
if table[x+i][y+i] != flag:
# 실패
return False
# 다 통과하면 성공
return True
# dia_five_2(x, y)
def dia_five_2(x, y):
# 범위 내에 없으면 탈락
if x >= 15:
return False
# flag
flag = table[x][y]
# 연속 다섯개 중
for i in range(1, 5):
# 다른게 있으면
if table[x+i][y-i] != flag:
# 실패
return False
# 다 통과하면 성공
return True
# 설계
# 완전 탐색 시작
for i in range(19):
for j in range(19):
# 가로로 5개가 연결되어있으면,
if table[i][j] and row_five(i, j):
# 승자를 출력하고
print(table[i][j])
# 가운데 위치한 바둑알 위치 출력
print(i+1, j+3)
# 종료
quit()
# 세로로 5개가 연결되어있으면,
elif table[i][j] and col_five(i, j):
# 승자를 출력하고
print(table[i][j])
# 가운데 위치한 바둑알 위치 출력
print(i+3, j+1)
# 종료
quit()
# \ 모양으로 5개가 연결되어있으면,
elif table[i][j] and dia_five_1(i, j):
# 승자를 출력하고
print(table[i][j])
# 가운데 위치한 바둑알 위치 출력
print(i+3, j+3)
# 종료
quit()
# / 모양으로 5개가 연결되어있으면,
elif table[i][j] and dia_five_2(i, j):
# 승자를 출력하고
print(table[i][j])
# 가운데 위치한 바둑알 위치 출력
print(i+3, j-1)
# 종료
quit()
# 승부가 결정되지 않은경우
print(0)