return (grid[new_x][new_y], -new_x, -new_y) > \
(grid[best_x][best_y], -best_x, -best_y)
한 줄 요약: “왼쪽 후보가 더 좋으면 True”를 반환하는 비교식입니다.
튜플을 이용한 사전식(lexicographical) 비교를 하고 있어요.
무슨 기준으로 더 좋은지?
grid[new_x][new_y] 값이 더 큰 쪽이 승리x가 더 작은 쪽이 승리 → -new_x가 더 크면(x가 더 작으면) 유리y가 더 작은 쪽이 승리 → -new_y가 더 크면(y가 더 작으면) 유리왜 그런가?
(a, b, c) 비교는 먼저 a를 비교하고, 같으면 b, 그래도 같으면 c를 비교합니다.-new_x처럼 음수로 뒤집는 트릭을 쓰면 “작은 x/ y가 이기는” 정렬 기준을 쉽게 만들 수 있어요. (왜냐면 -2 > -4 이므로 x=2가 x=4보다 우선됨)예시
(value=5, x=4, y=1)이고 새 후보가 (value=5, x=2, y=3)라면(5, -2, -3) vs 오른쪽: (5, -4, -1) → 첫 원소 같은 뒤 둘째 비교: -2 > -4 → True참고(표기):
# 백슬래시 없이 이렇게 쓰면 더 파이써닉해요
return (
grid[new_x][new_y], -new_x, -new_y
) > (
grid[best_x][best_y], -best_x, -best_y
)