import sys
rl = lambda: sys.stdin.readline().strip()
testCase = int(rl())
# x의승리 = 2, o의승리 = 4, 승자없음 = 1
def checkWinner(board):
oBoard = xBoard = 0
for power in range(9):
mark = (board // pow(3, power)) % 3
if mark == 1:
xBoard += pow(2,power)
elif mark == 2:
oBoard += pow(2,power)
for winPattern in [7, 56, 448, 73, 146, 219, 279, 84]:
if (winPattern & xBoard) == winPattern:
return pow(2,1)
if (winPattern & oBoard) == winPattern:
return pow(2,2)
return pow(2,0)
def tictactoe_factory():
cache = ["?" for a in range(pow(3,9))]
def tictactoe(board, x, o):
if cache[board] != "?":
return cache[board]
winner = checkWinner(board)
if winner != 1:
cache[board] = winner
return cache[board]
if (x + o) == 9:
cache[board] = pow(2,0)
return cache[board]
mirae = 0
nextX = x
nextO = o
if x == o: # x가 놓을차례
nextX += 1
markOfNext = 1
winMiraeBit = pow(2,1)
elif x > o: # o가 놓을차례
nextO += 1
markOfNext = 2
winMiraeBit = pow(2,2)
for power in range(9):
mark = (board // pow(3, power)) % 3
if mark:
continue
mirae = mirae | tictactoe(board=board + pow(3, power)*markOfNext, x=nextX, o=nextO)
if mirae & winMiraeBit:
cache[board] = winMiraeBit
elif mirae & 1:
cache[board] = 1
else:
cache[board] = mirae
return cache[board]
return tictactoe
for _ in range(testCase):
board = power = x = o = 0
for a in range(3):
for b in rl():
if b == "x":
board += pow(3, power)
x += 1
elif b == "o":
board += pow(3, power) * 2
o += 1
power += 1
tictactoe = tictactoe_factory()
print(["TIE", "x", "o"][tictactoe(board=board, x=x, o=o) // 2])
why why 왜 안되징
종만이형 바뻐서 댓글안단지 1년쯤됫심