시즌 1 · 알파고편 / PART 1 · PART 1 · 바둑이라는 우주 / Ch 3 · 따냄과 자살수

코드: play() — 진짜 한 수

드디어 진짜 play(). 한 수를 두면 일어나는 모든 일을 다 처리해.

🔑 핵심: 순서가 중요하다
  1. 둔다 — 일단 보드에 색깔 넣어.
  2. 적 따냄 — 내가 둔 곳의 인접 적 그룹들 중 활로 0인 것들 다 제거.
  3. 자살수 체크 — 그래도 내 그룹 활로 0이면 무효, 모든 걸 되돌림.

이 순서 덕분에 "상대를 잡으면서 두는 자살수처럼 보이는 수"가 합법이 돼. 적이 먼저 사라지니까 내 활로가 생기거든.

코드를 실행하면 백이 (3,4)에 두는 순간 흑돌 (2,4)가 보드에서 진짜로 사라지는 거 볼 수 있어. 5번 줄이 변하지. . . . . X. . . . ..

🎯 도전: 자살수 시도해보기

코드 맨 아래에 다음을 추가해서 자살수 시나리오를 직접 만들어봐:

print()
print("=== 자살수 시도 ===")
b2 = [[EMPTY] * SIZE for _ in range(SIZE)]
b2[1][2] = WHITE
b2[3][2] = WHITE
b2[2][1] = WHITE
b2[2][3] = WHITE
# 흑이 (2,2)에 두면 활로 0 → 자살수!
result = play(b2, 2, 2, BLACK)
print(f"결과: {result}")
print("(None이면 자살수로 무효)")
show(b2)

play() 함수가 알파고의 가장 작은 단위야. 알파고는 매 수마다 이 함수를 수십만 번 호출해서 미래를 시뮬레이션하지. 효율이 중요한 이유.

PYTHON