63_1_Sec5_Q2 (59)
# 6331303821 1296797 (2020-12-10 23:01) n=int(input()) m=int(input()) if n==1 and m==1 : x=input() if x=='1' : print('1 WIN') elif x=='2' : print('2 WIN') else : print('NOT OVER') board=[] onewin=False twowin=False d=False err=False for i in range(n) : x=input().split() board.append(x) for i in range(n) : for j in range(n) : if board[i][j] not in '012' : err=True draw=0 for i in range(n) : c=0 for j in range(n-m+1) : if board[i][j:j+m]==['1']*m : onewin=True if board[i][j:j+m]==['2']*m : twowin=True if '1' in board[i][j:j+m] and '2' in board[i][j:j+m] : c+=1 if c==n-m+1 : draw+=1 k=[] for i in range(n) : k.append([]) for j in range(n): k[i].append(board[j][i]) for i in range(n) : c=0 for j in range(n-m+1) : if k[i][j:j+m]==['1']*m : onewin=True if k[i][j:j+m]==['2']*m : twowin=True if '1' in k[i][j:j+m] and '2' in k[i][j:j+m] : c+=1 if c==n-m+1 : draw+=1 k=[] for i in range(n) : k.append(board[i][i]) c=0 for i in range(n-m+1) : if k[i:i+m]==['1']*m : onewin=True if k[i:i+m]==['2']*m : twowin=True if '1' in k[i:i+m] and '2' in k[i:i+m] : c+=1 if c==n-m+1: draw+=1 c=0 for i in range(n-m) : k=[] c=0 for j in range(n-i-1) : k.append(board[j][i+1+j]) for j in range(len(k)-m+1) : if k[j:j+m]==['1']*m : onewin=True if k[j:j+m]==['2']*m : twowin=True if '1' in k[j:j+m] and '2' in k[j:j+m] : c+=1 if c==len(k)-m+1 : draw+=1 k=[] c=0 for j in range(n-i-1) : k.append(board[j+i+1][j]) for j in range(len(k)-m+1) : if k[j:j+m]==['1']*m : onewin=True if k[j:j+m]==['2']*m : twowin=True if '1' in k[j:j+m] and '2' in k[j:j+m] : c+=1 if c== len(k)-m+1 : draw+=1 k=[] c=0 for i in range(n) : k.append(board[i][n-i-1]) for i in range(n-m+1) : if k[i:i+m]==['1']*m : onewin=True if k[i:i+m]==['2']*m : twowin=True if '1' in k[i:i+m] and '2' in k[i:i+m] : c+=1 if c==n-m+1 : draw+=1 for i in range(n-m) : k=[] c=0 for j in range(n-i-1) : k.append(board[j][n-i-j-2]) for j in range(len(k)-m+1) : if k[j:j+m]==['1']*m : onewin=True if k[j:j+m]==['2']*m : twowin=True if '1' in k[j:j+m] and '2' in k[j:j+m] : c+=1 if c==len(k)-m+1 : draw+=1 k=[] c=0 for j in range(n-i-1) : k.append(board[j+i+1][n-j-1]) for j in range(len(k)-m+1) : if k[j:j+m]==['1']*m : onewin=True if k[j:j+m]==['2']*m : twowin=True if '1' in k[j:j+m] and '2' in k[j:j+m] : c+=1 if c== len(k)-m+1 : draw+=1 if draw==(2*n)+2+(n-m)*4 : d=True if err or (onewin and twowin) : print('ERROR') elif onewin : print('1 WIN') elif twowin : print('2 WIN') elif d : print('DRAW') else : print('NOT OVER') |
# 6331306721 1296401 (2020-12-06 19:20) n = int(input()) m = int(input()) mat = [input().split() for _ in range(n)] tran = [[mat[j][i] for j in range(n)] for i in range(n)] hor = [] vet = [] dia = [] for i in range(len(mat)): for j in range(n - m + 1): hor.append([mat[i][j + k] for k in range(m)]) vet.append([tran[i][j + k] for k in range(m)]) for i in range(n - m + 1): for j in range(n - m + 1): dia.append([mat[i + k][j + k] for k in range(m)]) dia.append([mat[(n - 1 - i) - k][j + k] for k in range(m)]) c1, c2 = ['1'] * m, ['2'] * m w1, w2 = False, False if c1 in dia or c1 in hor or c1 in vet: w1 = True if c2 in dia or c2 in hor or c2 in vet: w2 = True for i in mat: for j in i: if j not in ['0', '1', '2']: print('ERROR') exit() if w1 and w2: print('ERROR') elif w1: print('1 WIN') elif w2: print('2 WIN') elif '0' in [col for row in mat for col in row]: print('NOT OVER') elif not(w1 or w2): print('DRAW') |
# 6331307321 1295746 (2020-12-04 19:14) N = int(input()) M = int(input()) error = False blank = False board=[] board2=[] for i in range (N): text= [int(e) for e in input().split()] if 0 in text: blank = True if {0,1,2} | set(text) != {0,1,2}: error =True board.append(text) board2.append(text[::-1]) Xwin = False Owin = False for i in range (N): #check row win? for j in range (N-M+1): if board[i][j:j+M] == [1]*M: Xwin = True elif board[i][j:j+M] == [2]*M: Owin = True #check column win? for j in range (N-M+1): temp=[] for c in range (j,j+M): temp.append(board[c][i]) if temp == [1]*M: Xwin = True elif temp == [2]*M: Owin = True #check diagonal win? for i in range (N-M+1): for j in range (N-M+1): temp1=[] temp2=[] for start in range (M): temp1.append(board[i+start][j+start]) temp2.append(board2[i+start][j+start]) if temp1 == [1]*M or temp2 == [1]*M: Xwin = True elif temp1 == [2]*M or temp2 == [2]*M: Owin = True #adding if error or Xwin and Owin: print('ERROR') elif Xwin: print('1 WIN') elif Owin: print('2 WIN') elif blank: print('NOT OVER') else: print('DRAW') |
# 6331308021 1295645 (2020-12-04 16:50) import numpy as np table = [] n = int(input()) m = int(input()) for i in range(n): x = input().split() for e in x: if e != '0' and e != '1' and e != '2': print('ERROR') exit(0) table.append(x) table = np.array(table) out = [] zero = 0 for r in range(n): if '1'*m in ''.join(table[r,:]): out.append('1') if '2'*m in ''.join(table[r,:]): out.append('2') if '0' not in ''.join(table[r,:]): zero += 1 for c in range(n): if '1'*m in ''.join(table[:,c]): out.append('1') if '2'*m in ''.join(table[:,c]): out.append('2') if '0' not in ''.join(table[:,c]): zero += 1 t1 = [] t2 = [] for i in range(-n+1,n): t1.append(table.diagonal(i)) t2.append(table[:,::-1].diagonal(i)) for e in t1: if '1'*m in ''.join(e): out.append('1') if '2'*m in ''.join(e): out.append('2') for e in t2: if '1'*m in ''.join(e): out.append('1') if '2'*m in ''.join(e): out.append('2') if len(set(out)) >= 2: print('ERROR') elif set(out) == {'1'}: print('1 WIN') elif set(out) == {'2'}: print('2 WIN') elif zero == n*2 and len(out) == 0: print('DRAW') elif zero < n*2 and len(out) == 0: print('NOT OVER') |
# 6331309621 1296585 (2020-12-09 00:41) import numpy as np n = int(input()) m = int(input()) ans = set() inf = [] err = 0 check = 0 for i in range(n): inf.append([int(e) for e in input().strip().split()]) for e in inf: for t in e: if t!= 1 and t!=2 and t!=0: err = 1 inn = np.array(inf) #row bingo if err == 0 : bul1 = [] bul2 = [] for i in range(n): c1 = 0 c2 = 0 for j in range(n-1): if inn[i,j] == inn[i,j+1] == 1: c1+=1 elif inn[i,j] == inn [i,j+1] == 2: c2+=1 if c1 == m-1: bul1.append(True) else: bul1.append(False) if c2 == m-1: bul2.append(True) else: bul2.append(False) if (True in bul1) and (True in bul2): err = 1 elif True in bul1: ans.add('1') check = 1 elif True in bul2: ans.add('2') check = 1 # column bingo if err == 0 and check == 0: bul1 = [] bul2 = [] for j in range(n): c1 = 0 c2 = 0 for i in range(n-1): if inn[i,j] == inn[i+1,j] == 1: c1+=1 elif inn[i,j] == inn [i+1,j] == 2: c2+=1 if c1 == m-1: bul1.append(True) else: bul1.append(False) if c2 == m-1: bul2.append(True) else: bul2.append(False) if (True in bul1) and (True in bul2): err = 1 elif True in bul1: ans.add('1') check = 1 elif True in bul2: ans.add('2') check = 1 # side from front if err == 0 and check ==0: c1 = 0 c2 = 0 for i in range(n-1): if inn[i,i] == inn[i+1,i+1]==1: c1 += 1 elif inn[i,i] == inn[i+1,i+1]== 2: c2 += 1 if (c1 == m-1) and (c2 == m-1): err = 1 elif c1 == m-1: ans.add('1') check =1 elif c2 == m-1: ans.add('2') check = 1 # side from back if err == 0 and check ==0: c1 = 0 c2 = 0 for i in range(n-1): if inn[i,n-i-1] == inn[i+1,n-i-2] == 1: c1 += 1 elif inn[i,n-i-1] == inn[i+1,n-i-2] == 2: c2 += 1 if (c1 == m-1) and (c2 == m-1): err = 1 elif c1 == m-1: ans.add('1') check =1 elif c2 == m-1: ans.add('2') check = 1 #side R up if err == 0 and check == 0: c1 = 0 c2 = 0 for i in range(n-1): for j in range(1,n-i-1): if inn[j,i+j+1] == inn[j+1,i+j+1] == 1: c1 += 1 elif inn[j,i+j] == inn[j+1,i+j+1] == 2: c2 += 1 if (c1 == m-1) and (c2 == m-1): err = 1 elif c1 == m-1: ans.add('1') check =1 elif c2 == m-1: ans.add('2') check = 1 if err == 1 or len(ans)==2: print('ERROR') elif check == 0 and (0 not in inn): print('DRAW') elif check == 0 and (0 in inn): print('NOT OVER') elif ('1' in ans) and (len(ans)==1): print('1 WIN') elif ('2' in ans) and (len(ans) == 1): print('2 WIN') |
# 6331310121 1288122 (2020-11-17 10:43) n = int(input()) m = int(input()) d = [input().split() for _ in range(n)] dt = [list(row) for row in zip(*d)] #check error def check(d): win1 = 0 win2 = 0 for i in range(n): for j in range(n): if d[i][j] not in '012': return 'ERROR' if m <= n: #check winner one = ['1'] * m for i in range(n): for j in range(n-m+1): if all(a == b for a, b in zip(d[i][j:j+m], one)): win1 = 1 break for i in range(n): for j in range(n-m+1): if all(a == b for a, b in zip(dt[i][j:j+m], one)): win1 = 1 break two = ['2'] * m for i in range(n): for j in range(n-m+1): if all(a == b for a, b in zip(d[i][j:j+m], two)): win2 = 1 break for i in range(n): for j in range(n-m+1): if all(a == b for a, b in zip(dt[i][j:j+m], two)): win2 = 1 break #check diag for i in range(n-m+1): for j in range(n-m+1): c = 0 for k in range(m): if d[i+k][j+k] == '1': c += 1 if c == m: win1 = 1 for i in range(n-1,m-2,-1): for j in range(n-m+1): c = 0 for k in range(m): if d[i-k][j+k] == '1': c += 1 if c == m: win1 = 1 for i in range(n-m+1): for j in range(n-m+1): c = 0 for k in range(m): if d[i+k][j+k] == '2': c += 1 if c == m: win2 = 1 for i in range(n-1,m-2,-1): for j in range(n-m+1): c = 0 for k in range(m): if d[i-k][j+k] == '2': c += 1 if c == m: win2 = 1 if win1 and win2: return 'ERROR' elif win1: return '1 WIN' elif win2: return '2 WIN' elif any(d[i][j] == '0' for i in range(n) for j in range(n)): return 'NOT OVER' else: return 'DRAW' print(check(d)) |
# 6331311821 1296191 (2020-12-05 13:30) n=int(input()) m=int(input()) ox=[] for i in range(n): ox.append(input().split()) def checkhor(ox): score1=0 ; score2=0 for i in range(len(ox)): if '1'*m in ''.join(ox[i]): score1+=1 if '2'*m in ''.join(ox[i]): score2+=1 return [score1,score2] def checkver(ox): score1=0 ; score2=0 for i in range(len(ox)): if '1'*m in ''.join([ox[j][i] for j in range(len(ox))]): score1+=1 if '2'*m in ''.join([ox[j][i] for j in range(len(ox))]): score2+=1 return [score1,score2] def checkd(ox): score1=0 ;score2=0 for i in range(len(ox)): #นับแถว for j in range(len(ox)): #ไล่ col key = max([i,j]) if '1'*m in ''.join([ox[i+k][j+k] for k in range(len(ox)-key)]) or '1'*m in ''.join([ox[i+k][len(ox)-j-k-1] for k in range(len(ox)-key)]): score1+=1 if '2'*m in ''.join([ox[i+k][j+k] for k in range(len(ox)-key)]) or '2'*m in ''.join([ox[i+k][len(ox)-j-k-1] for k in range(len(ox)-key)]): score2+=1 return [score1,score2] def checkerror(d): for e in d: for j in e: if j not in ['0','1','2']: return True if allscore(d)[0]>0 and allscore(d)[1]>0: return True return False def allscore(ox): score1=0 ; score2=0 score1=checkhor(ox)[0]+checkver(ox)[0]+checkd(ox)[0] score2=checkhor(ox)[1]+checkver(ox)[1]+checkd(ox)[1] return [score1,score2] if checkerror(ox): print('ERROR') elif allscore(ox)[0]==0 and allscore(ox)[1]==0: found=False for e in ox: for i in e: if i=='0': found=True if found: print('NOT OVER') else: print('DRAW') elif allscore(ox)[0]>0: print('1 WIN') elif allscore(ox)[1]>0: print('2 WIN') |
# 6331313021 1296435 (2020-12-06 20:41) n=int(input()) #board size m=int(input()) #win size board=[] for i in range(n): #get input in board row=input().split() board.append(row) #print(board) def checkwin(board): line1='1'*m line2='2'*m win1=False win2=False ##row win for i in range(n): if line1 in "".join(board[i]): win1=True elif line2 in "".join(board[i]): win2=True ##column win newboard=[] for i in range(n): newboard.append([]) for j in range(n): newboard[-1].append(board[j][i]) #print(newboard) for i in range(n): if line1 in "".join(newboard[i]): win1=True elif line2 in "".join(newboard[i]): win2=True ##diag / for i in range(-1,-1-n+m-1,-1): isave=i for j in range(0,n-m+1,1): ans='' i=isave for k in range(m): ans+=board[i][j] i-=1 j+=1 if ans==line1: win1=True elif ans==line2: win2=True ##diag \ count=0 for i in range(n-m+1): savei=i for j in range(n-m+1): i=savei ans="" for k in range(m): ans+=board[i][j] if i<n-1 and j<n-1: i+=1 j+=1 if ans==line1: win1=True elif ans==line2: win2=True #error check check=set() for i in range(n): for j in range(n): check.add(board[i][j]) if win1==True and win2==True: return "ERROR" elif len(check - {'0','1','2'})>0: return "ERROR" elif win1==True: return "1 WIN" elif win2==True: return "2 WIN" elif win1==False and win2==False and '0' in check: return "NOT OVER" elif win1==False and win2==False and '0' not in check: return "DRAW" else: return "ERROR" print(checkwin(board)) |
# 6331315321 1295665 (2020-12-04 18:09) def who_win(lst,num): for i in range(n): if num*m in "".join(lst[i]): return True for i in range(n): col = [] for j in range(n): col.append(lst[j][i]) if num*m in "".join(col): return True ox = n-m+1 rev = lst[::-1] k = n for i in range(ox): diagonal1 = [] diagonal2 = [] if i == 0: for j in range(n): diagonal1.append(lst[j][j]) diagonal2.append(rev[j][j]) if num*m in "".join(diagonal1) or num*m in "".join(diagonal2): return True else: k -= 1 c = i diagonal3 = [] diagonal4 = [] for j in range(k): diagonal1.append(lst[j][c]) diagonal2.append(rev[j][c]) diagonal3.append(lst[c][j]) diagonal4.append(rev[c][j]) c += 1 if num*m in "".join(diagonal1) or num*m in "".join(diagonal2) or num*m in "".join(diagonal3) or num*m in "".join(diagonal4): return True return False def error_check(lst): if who_win(lst,"1") and who_win(lst,"2"): return True for i in range(n): for j in range(n): if lst[i][j] not in "012": return True return False def not_over(lst): if who_win(lst,"1") or who_win(lst,"2"): return False for i in range(n): if "0" in lst[i]: return True return False n = int(input()) m = int(input()) lst = [[0 for e in range(n)] for i in range(n)] for i in range(n): lst[i] = str(input()).split() if error_check(lst): print("ERROR") elif not_over(lst): print("NOT OVER") elif who_win(lst,"1"): print("1 WIN") elif who_win(lst,"2"): print("2 WIN") else: print("DRAW") |
# 6331317621 1296493 (2020-12-07 20:48) n = int(input()) wp = int(input()) table = [] for i in range(n): x = input().split() table.append(x) def rowwin(a): ss = set() for i in range(len(a)): for j in range(len(a[i])-wp+1): c = 0 for k in range(wp): m = a[i][j] if a[i][j] != a[i][j+k]: c = 1 m = -1 break if c == 0: ss.add(m) return ss def colwin(a): ss = set() for i in range(len(a)-wp+1): for j in range(len(a)): c = 0 for k in range(wp): m = a[i][j] if a[i][j] != a[i+k][j]: c = 1 m = -1 break if c == 0: ss.add(m) return ss def other(x): for i in range(len(x)): for j in range(len(x[i])): if x[i][j] not in ['0','1','2']: return True return False def zig1win(a): ss = set() for i in range(len(a)-wp+1): for j in range(len(a[i])-wp+1): c = 0 for k in range(wp): m = a[i][j] if a[i][j] != a[i+k][j+k]: c = 1 m = -1 if c == 0: ss.add(m) return ss def zig2win(a): ss = set() for i in range(len(a)-wp+1): for j in range(len(a[i])-1,wp-2,-1): c = 0 for k in range(wp): m = a[i][j] if a[i][j] != a[i+k][j-k]: c = 1 m = -1 break if c== 0: ss.add(m) return ss def zeroleft(x): for i in range(len(x)): for j in range(len(x[i])): if x[i][j] == '0': return True return False if other(table) == True: print('ERROR') else: if colwin(table) | rowwin(table) | zig1win(table) | zig2win(table) == {'1','2'}: print('ERROR') elif colwin(table) | rowwin(table) | zig1win(table) | zig2win(table) == {'1','2','0'}: print('ERROR') elif colwin(table) | rowwin(table) | zig1win(table) | zig2win(table) == {'1','0'}: print('1 WIN') elif colwin(table) | rowwin(table) | zig1win(table) | zig2win(table) == {'1'}: print('1 WIN') elif colwin(table) | rowwin(table) | zig1win(table) | zig2win(table) == {'2','0'}: print('2 WIN') elif colwin(table) | rowwin(table) | zig1win(table) | zig2win(table) == {'2'}: print('2 WIN') elif colwin(table) | rowwin(table) | zig1win(table) | zig2win(table) =={'0'}: print('NOT OVER YET') else: if zeroleft(table) == True: print('NOT OVER') else: print('DRAW') |
# 6331319921 1295990 (2020-12-04 22:38) table = int(input()) win_score = int(input()) board = [] for i in range(table): k = input().split() board.append(k) def Other_num(board): for i in board: for j in range(len(i)): if i[j] not in ['1','2','0']: return True return False def left_right(board,win_score,a): check = a*win_score k = '' for i in range(len(board)): j = 0 start = board[j][i] while i < len(board) and j < len(board): k += board[j][i] j += 1 i += 1 if check in k: return True k = '' for i in range(len(board)): j = 0 start = board[j][i] while i < len(board) and j < len(board): k += board[i][j] j += 1 i += 1 if check in k: return True k = '' return False def right_left(board,win_score,a): check = a*win_score k = '' for i in range(len(board)): j = 0 start = board[j][i] while i >= 0 and j < len(board): k += board[i][j] j += 1 i -= 1 if check in k: return True k = '' for i in range(len(board)): j = len(board)-1 start = board[i][j] while i < len(board) and j >= 0: k += board[i][j] j -= 1 i += 1 if check in k: return True k = '' return False def Win_Row_Column(board,win_score,a): check = a*win_score k = '' for i in board: for j in range(len(board)): k += i[j] if check in k: return True k = '' k = '' for i in range(len(board)): for j in board: k += j[i] if check in k: return True k = '' return False def Find_0(board,win_score): for i in board: for j in range(len(board)): if i[j] == '0': return True return False other_num = Other_num(board) win_1 = Win_Row_Column(board,win_score,'1') or left_right(board,win_score,'1') or right_left(board,win_score,'1') win_2 = Win_Row_Column(board,win_score,'2') or left_right(board,win_score,'2') or right_left(board,win_score,'2') find_0 = Find_0(board,win_score) if other_num : print('ERROR') elif win_1 : if win_2: print('ERROR') else: print('1 WIN') elif win_2: print('2 WIN') elif find_0: print('NOT OVER') else: print('DRAW') |
# 6331320421 1296208 (2020-12-05 14:36) n = int(input()) m = int(input()) game = list() for i in range(n) : x = [int(e) for e in input().strip().split()] game.append(x) player1 = 0 player2 = 0 #เช็คแถวนอน for e in game : for i in range(n-m+1) : if e[i:i+m] == [1]*m : player1 += 1 elif e[i:i+m] == [2]*m : player2 += 1 #เช็คแถวตั้ง for i in range(n) : for j in range(n-m+1) : l = list() for k in range(m) : l.append(game[j+k][i]) if l == [1]*m : player1 +=1 elif l == [2]*m : player2 += 1 #เช็คแนวทแยง for i in range(n-m+1) : l = list() for j in range(m) : l.append(game[i+j][i+j]) if l == [1]*m : player1 += 1 elif l == [2]*m : player2 += 1 if n > m : for d in range(1,n-m+1) : for i in range(n-m-d+1) : l = list() for j in range(m) : l.append(game[i+j+d][i+j]) if l == [1]*m : player1 += 1 elif l == [2]*m : player2 += 1 for i in range(n-m-d+1) : l = list() for j in range(m) : l.append(game[i+j][i+j+d]) if l == [1]*m : player1 += 1 elif l == [2]*m : player2 += 1 #เช็คแนวทแยง มุมขวาบน -> มุมซ้ายล่าง for i in range(n-m+1) : l = list() for j in range(m) : l.append(game[i+j][n-i-j-1]) if l == [1]*m : player1 += 1 elif l == [2]*m : player2 += 1 if n > m : for d in range(1,n-m+1) : for i in range(n-m-d+1) : l = list() for j in range(m) : l.append(game[i+j+d][n-i-j-1]) if l == [1]*m : player1 += 1 elif l == [2]*m : player2 += 1 for i in range(n-m-d+1) : l = list() for j in range(m) : l.append(game[i+j][n-i-j-d-1]) if l == [1]*m : player1 += 1 elif l == [2]*m : player2 += 1 #เช็ค error error = False for e in game : for d in e : if d not in [0,1,2] : error = True break if error : break if (player1 >= 1 and player2 >= 1) or error : print('ERROR') elif player1 == 0 and player2 == 0 : over = True for e in game : if 0 in e : over = False break if not over : print('NOT OVER') else : print('DRAW') elif player1 > 0 and player2 == 0 : print('1 WIN') elif player1 == 0 and player2 > 0 : print('2 WIN') |
# 6331321021 1295835 (2020-12-04 20:28) import numpy as np n = int(input()) winn = int(input()) mat = [] winner = set() these = [0,1,2] chec = False for i in range(n) : a = [int(e) for e in input().split()] mat.append(a) matrix = np.array(mat) for i in range(len(mat)) : #1แนวนอน count = 0 for j in range(len(mat[0])) : if mat[i][j] not in these : winner.add("ERROR") if mat[i][j] == 1 : count += 1 else : count = 0 if count == winn and "ERROR" not in winner : winner.add("1 WIN") for i in range(len(mat)) : #2แนวนอน count = 0 for j in range(len(mat[0])) : if mat[i][j] not in these : winner.add("ERROR") if mat[i][j] == 2 : count += 1 else : count = 0 if count == winn and "ERROR" not in winner : winner.add("2 WIN") for i in range(len(mat[0])) : #1แนวตั้ง count = 0 for j in range(len(mat)) : if mat[j][i] == 1 : count += 1 else : count = 0 if count == winn and "ERROR" not in winner : winner.add("1 WIN") for i in range(len(mat[0])) : #2แนวตั้ง count = 0 for j in range(len(mat)) : if mat[j][i] == 2 : count += 1 else : count = 0 if count == winn and "ERROR" not in winner : winner.add("2 WIN") diags = [matrix[::-1,:].diagonal(i) for i in range(-matrix.shape[0]+1, matrix.shape[1])] #ทะแยง/ for i in range(len(diags)) : #1แนวทแยง/ count = 0 for j in range(len(diags[i])) : if len(diags[i]) >= winn and diags[i][j] == 1 : count += 1 else : count = 0 if count == winn and "ERROR" not in winner : winner.add("1 WIN") for i in range(len(diags)) : #2แนวทแยง/ count = 0 for j in range(len(diags[i])) : if len(diags[i]) >= winn and diags[i][j] == 2 : count += 1 else : count = 0 if count == winn and "ERROR" not in winner : winner.add("2 WIN") diags2 = [matrix.diagonal(i) for i in range(matrix.shape[1]-1,-matrix.shape[0],-1)] #ทแยง\ for i in range(len(diags2)) : #1แนวทแยง\ count = 0 for j in range(len(diags2[i])) : if len(diags2[i]) >= winn and diags2[i][j] == 1 : count += 1 else : count = 0 if count == winn and "ERROR" not in winner : winner.add("1 WIN") for i in range(len(diags2)) : #2แนวทแยง\ count = 0 for j in range(len(diags2[i])) : if len(diags2[i]) >= winn and diags2[i][j] == 2 : count += 1 else : count = 0 if count == winn and "ERROR" not in winner : winner.add("2 WIN") if ("1 WIN" in winner and "2 WIN" in winner) or winn > n : print("ERROR") chec = True if len(winner) == 0 : for i in range(len(mat)) : for j in range(len(mat[0])) : if mat[i][j] == 0 : winner.add("NOT OVER") if len(winner) == 0 and "NOT OVER" not in winner : winner.add("DRAW") if not chec and len(winner) < 2 : for m in winner : print(m) |
# 6331322721 1295813 (2020-12-04 20:08) size = int(input()) win = int(input()) board = [] boola = False boole = False winner1 = 0 winner2 = 0 #แนวนอน for i in range(size) : rowy = input().split() board.append(rowy) n1 = 0 n2 = 0 for j in rowy : if j not in ['0','1','2'] : boola = True elif j == '1' : n1 += 1 n2 = 0 if n1 >= win and winner1 < 1 : winner1 += 1 elif j == '2' : n2 += 1 n1 = 0 if n2 >= win and winner2 < 1 : winner2 += 1 elif j == '0' : n1 = 0 n2 = 0 boole = True #แนวตั้ง boardV2 = [[board[j][i] for j in range(size)] for i in range(size)] for i in boardV2 : n1 = 0 n2 = 0 if boola : break for j in i : if j not in ['0','1','2'] : boola = True elif j == '1' : n1 += 1 n2 = 0 if n1 >= win and winner1 < 1 : winner1 += 1 elif j == '2' : n2 += 1 n1 = 0 if n2 >= win and winner2 < 1 : winner2 += 1 elif j == '0' : n1 = 0 n2 = 0 boole = True for i in range(size) : for j in range(size) : if boola : break n1 = 0 n2 = 0 L = i P = j booli = True while booli : if L+1 <= size-1 and P+1 <= size-1 : if board[L][P] == board[L+1][P+1] and board[L][P] == '1' and n1 < win : n1 += 1 n2 = 0 L += 1 P += 1 if n1 >= win and winner1 < 1 : winner1 += 1 booli = False elif board[L][P] == board[L+1][P+1] and board[L][P] == '2' and n2 < win : n2 += 1 n1 = 0 L += 1 P += 1 if n2 >= win and winner2 < 1 : winner2 += 1 booli = False else : n1 = 0 n2 = 0 L += 1 P += 1 else : if L < size and P < size : if board[L][P] == '1' and n1 < win : n1 += 1 n2 = 0 L += 1 P += 1 if n1 >= win and winner1 < 1 : winner1 += 1 booli = False elif board[L][P] == '2' and n2 < win : n2 += 1 n1 = 0 L += 1 P += 1 if n2 >= win and winner2 < 1 : winner2 += 1 booli = False else : n1 = 0 n2 = 0 L += 1 P += 1 else : booli = False boardV3 = [[board[j][i] for j in range(size-1,-1,-1)] for i in range(size)] for i in range(size) : for j in range(size) : if boola : break n1 = 0 n2 = 0 L = i P = j booli = True while booli : if L+1 <= size-1 and P+1 <= size-1 : if boardV3[L][P] == boardV3[L+1][P+1] and boardV3[L][P] == '1' and n1 < win : n1 += 1 n2 = 0 L += 1 P += 1 if n1 >= win and winner1 < 1 : winner1 += 1 booli = False elif boardV3[L][P] == boardV3[L+1][P+1] and boardV3[L][P] == '2' and n2 < win : n2 += 1 n1 = 0 L += 1 P += 1 if n2 >= win and winner2 < 1 : winner2 += 1 booli = False else : n1 = 0 n2 = 0 L += 1 P += 1 else : if L < size and P < size : if boardV3[L][P] == '1' and n1 < win : n1 += 1 n2 = 0 L += 1 P += 1 if n1 >= win and winner1 < 1 : winner1 += 1 booli = False elif boardV3[L][P] == '2' and n2 < win : n2 += 1 n1 = 0 L += 1 P += 1 if n2 >= win and winner2 < 1 : winner2 += 1 booli = False else : n1 = 0 n2 = 0 L += 1 P += 1 else : booli = False if boola : print('ERROR') elif winner1 == 1 and winner2 == 1 : print('ERROR') elif winner1 == 0 and winner2 == 0 : if boole : print('NOT OVER') elif not boole : print('DRAW') elif winner1 == 1 and winner2 == 0 : print('1 WIN') elif winner1 == 0 and winner2 == 1 : print('2 WIN') |
# 6331325621 1287992 (2020-11-17 10:11) def check(board,i,j,num): for k in range(1,m): if i+k>=n or i+k<0 or j>=n or j<0:break else: if board[i+k][j]==num: pass else:break else:result.add(num) for k in range(1,m): if i-k>=n or i-k<0 or j>=n or j<0:break else: if board[i-k][j]==num: pass else:break else:result.add(num) for k in range(1,m): if i>=n or i<0 or j+k>=n or j+k<0:break else: if board[i][j+k]==num: pass else:break else:result.add(num) for k in range(1,m): if i>=n or i<0 or j-k>=n or j-k<0:break else: if board[i][j-k]==num: pass else:break else:result.add(num) for k in range(1,m): if i+k>=n or i+k<0 or j+k>=n or j+k<0:break else: if board[i+k][j+k]==num: pass else:break else:result.add(num) for k in range(1,m): if i+k>=n or i+k<0 or j-k>=n or j-k<0:break else: if board[i+k][j-k]==num: pass else:break else:result.add(num) for k in range(1,m): if i-k>=n or i-k<0 or j+k>=n or j+k<0:break else: if board[i-k][j+k]==num: pass else:break else:result.add(num) for k in range(1,m): if i-k>=n or i-k<0 or j-k>=n or j-k<0:break else: if board[i-k][j-k]==num: pass else:break else:result.add(num) n=int(input()) m=int(input()) board=[] error=False for i in range(n): board.append(input().split()) result=set() for i in range(n): for j in range(n): if board[i][j] not in ['0','1','2']: error=True break if board[i][j]!='0':check(board,i,j,board[i][j]) if error==True:break if error: r='ERROR' else: if '1' in result and '2' in result:r='ERROR' elif '1' in result:r='1 WIN' elif '2' in result:r='2 WIN' elif len(result)==0: for row in board: if '0' in row: r='NOT OVER' break else:r='DRAW' else:r='ERROR' print(r) |
# 6331326221 1296037 (2020-12-04 23:31) n = abs(int(input())) m = abs(int(input())) x = [] for i in range(n): x.append(input().strip().split()) next = True for i in x: if next == False: break for j in i: if j!='0' and j!='1' and j!='2': print('ERROR') next = False break win = [] while next == True: if n==1 and m==1: print(x[0][0]+' WIN') break if m==0 or m==1: print('ERROR') break for i in range(n): for j in range(n-m+1): if x[i][j]==x[i][j+1]=='1' and ('1' not in win): no = True for k in range(m): if x[i][j]!=x[i][j+k]: no = False if no==True: win.append('1') if x[i][j]==x[i][j+1]=='2' and ('2' not in win): no = True for k in range(m): if x[i][j]!=x[i][j+k]: no = False if no==True: win.append('2') for i in range(n-m+1): for j in range(n): if x[i][j]==x[i+1][j]=='1' and ('1' not in win): no = True for k in range(m): if x[i][j]!=x[i+k][j]: no = False if no==True: win.append('1') if x[i][j]==x[i+1][j]=='2' and ('2' not in win): no = True for k in range(m): if x[i][j]!=x[i+k][j]: no = False if no==True: win.append('2') for i in range(n-m+1): for j in range(n-m+1): if x[i][j]==x[i+1][j+1]=='1' and ('1' not in win): no = True for k in range(m): if x[i][j]!=x[i+k][j+k]: no = False if no==True: win.append('1') if x[i][j]==x[i+1][j+1]=='2' and ('2' not in win): no = True for k in range(m): if x[i][j]!=x[i+k][j+k]: no = False if no==True: win.append('2') if x[i][-1-j]==x[i+1][-1-j-1]=='1' and ('1' not in win): no = True for k in range(m): if x[i][-1-j]!=x[i+k][-1-j-k]: no = False if no==True: win.append('1') if x[i][-1-j]==x[i+1][-1-j-1]=='2' and ('2' not in win): no = True for k in range(m): if x[i][-1-j]!=x[i+k][-1-j-k]: no = False if no==True: win.append('2') if len(win)==2: print('ERROR') next = False elif len(win)==0: for u in x: if next == False: break for uu in u: if uu=='0': print('NOT OVER') next = False break if next==True: print('DRAW') next = False elif win==['1']: print('1 WIN') next = False elif win==['2']: print('2 WIN') next = False |
# 6331327921 1296070 (2020-12-05 00:58) def R_win(n,m,k) : count = 1 w = [] for i in range(n) : for j in range(n-1) : if k[i][j] == k[i][j+1] : count += 1 win = k[i][j] if count == m and win != '0': w.append(win) else : count = 1 count = 1 return w def C_win(n,m,k) : count = 1 w = [] for j in range(n) : count = 1 for i in range(n-1) : if k[i][j] == k[i+1][j] : count += 1 win = k[i][j] if count == m and win != '0': w.append(win) else : count = 1 return w def OR_win(n,m,k) : count = 1 w = [] for i in range(n-1): for j in range(n-i-1) : if k[j][i+j] == k[j+1][i+1+j] : count += 1 win = k[j][i+j] if count == m and win != '0': w.append(win) else : count =1 count = 1 for i in range(n-1): for j in range(n-i-1) : if k[i+j][j] == k[i+j+1][j+1]: count += 1 win = k[i+j][j] if count == m and win != '0': w.append(win) else : count =1 count = 1 return w def OL_win(n,m,k) : count = 1 w = [] for i in range(1,n) : for j in range(n-i) : if k[j][-i-j] == k[j+1][-i-j-1] : count += 1 win = k[j][-i-j] if count == m and win != '0': w.append(win) else : count =1 count = 1 for i in range(1,n) : for j in range(n-i) : if k[j+i-1][n-1-j] == k[j+i][n-j-2] : count += 1 win = k[j+i-1][n-1-j] if count == m and win != '0': w.append(win) else : count =1 count = 1 return w def error(k,n): for i in range(n) : for j in range(n) : if k[i][j] not in '0' and k[i][j] not in '1' and k[i][j] not in '2' : return True return False def no(k,n) : for i in range(n) : for j in range(n) : if k[i][j] in '0' : return True return False #--------------------------------------------------- n = int(input()) m = int(input()) k = [] for i in range(n) : p = input().split() k.append(p) x1 = R_win(n,m,k) x2 = C_win(n,m,k) x3 = OR_win(n,m,k) x4 = OL_win(n,m,k) x5 = list(set(x1+x2+x3+x4)) if error(k,n) or m>n or m<2 : print("ERROR") elif len(x5)==2 : print("ERROR") elif len(x5) == 0 : if no(k,n) : print("NOT OVER") else : print("DRAW") elif len(x5) == 1: print(''.join(x5),"WIN") else : print("ERROR") |
# 6331329121 1295753 (2020-12-04 19:20) n = int(input()) #size of board m = int(input()) #amount to win board = [] for i in range(n): board.append(input().strip().split(' ')) boardrev = [] for i in range(len(board)): insert = [] for j in range(len(board)): insert.append(board[j][i]) boardrev.append(insert) player1 = False player2 = False #------check horizontal------- for i in board: for j in range(0,len(board)-m+1): k = set(i[j:j+m]) if k == {'1'}: player1 = True elif k == {'2'}: player2 = True #-------check vertical------ for i in boardrev: for j in range(0,len(boardrev)-m+1): k = set(i[j:j+m]) if k == {'1'}: player1 = True elif k == {'2'}: player2 = True #------check diagonal1------ diagonal1 = [] #topleft to bottomright for i in range(0,n-m+1): pos1 = 0 pos2 = i insert = [] while pos2 < len(board): insert.append(board[pos1][pos2]) pos1 += 1 pos2 += 1 diagonal1.append(insert) for i in range(1,n-m+1): pos1 = i pos2 = 0 insert = [] while pos2 < len(board)-i: insert.append(board[pos1][pos2]) pos1 += 1 pos2 += 1 diagonal1.append(insert) for i in range(len(diagonal1)): for j in range(0,len(diagonal1[i])-m+1): k = set(diagonal1[i][j:j+m]) if k == {'1'}: player1 = True elif k == {'2'}: player2 = True #-------check diagonal2------ diagonal2 = [] #topright to bottomleft for i in range(-1,-(n-m)-2,-1): pos1 = 0 pos2 = i insert = [] while pos2 > -len(board)-1: insert.append(board[pos1][pos2]) pos1 += 1 pos2 -= 1 diagonal2.append(insert) for i in range(1,n-m+1): pos1 = i pos2 = -1 insert = [] while pos2 > -len(board)-1+i: insert.append(board[pos1][pos2]) pos1 += 1 pos2 -= 1 diagonal2.append(insert) for i in range(len(diagonal2)): for j in range(0,len(diagonal2[i])-m+1): k = set(diagonal2[i][j:j+m]) if k == {'1'}: player1 = True elif k == {'2'}: player2 = True #-----check only 012------ error = False draw = True for i in board: if set(i) - {'0','1','2'} != set(): error = True if error == False: if (player1 == True) and (player2 == True): print('ERROR') elif player1 == True: print('1 WIN') elif player2 == True: print('2 WIN') else: for i in board: if set(i) - {'1','2'} != set(): draw = False if draw == False: print('NOT OVER') else: print('DRAW') else: print('ERROR') |
# 6331330721 1296149 (2020-12-05 11:29) N = int(input()) M = int(input()) ox = [[] for i in range(N)] for i in range(N): ox[i] = [e for e in input().strip().split()] game = False result = '' d = N - M + 1 for i in range(N): for t in range(d): f = ox[i][t] if f in '12': c = 0 for j in range(t,t+M): if ox[i][j] == f: c += 1 if c == M: if game and f != result[0]: result = 'ERROR' else: game = True result = f + ' WIN' elif ox[i][j] not in '012': game = True result = 'ERROR' break else: break elif f not in '012': game = True result = 'ERROR' for j in range(N): for t in range(d): f = ox[t][j] if f in '12': c = 0 for i in range(t,t+M): if ox[i][j] == f: c += 1 if c == M: if game and f != result[0]: result = 'ERROR' else: game = True result = f + ' WIN' elif ox[i][j] not in '012': game = True result = 'ERROR' break else: break elif f not in '012': game = True result = 'ERROR' for i in range(d): for t in range(d): f = ox[i][t] if f in '12': c = 0 k = i for j in range(t,t+M): if ox[k][j] == f: c += 1 if c == M: if game and f != result[0]: result = 'ERROR' else: game = True result = f + ' WIN' elif ox[i][j] not in '012': game = True result = 'ERROR' break else: break k += 1 elif f not in '012': game = True result = 'ERROR' for i in range(d): for t in range(d): f = ox[i][t] if f in '12': c = 0 k = i for j in range(-(t+1),-(t+M+1),-1): if ox[k][j] == f: c += 1 if c == M: if game and f != result[0]: result = 'ERROR' else: game = True result = f + ' WIN' elif ox[i][j] not in '012': game = True result = 'ERROR' break else: break k += 1 elif f not in '012': game = True result = 'ERROR' if not game: for i in range(N): for j in range(N): if ox[i][j] == '0': result = 'NOT OVER' game = True break if game: break if not game: result = 'DRAW' print(result) |
# 6331332021 1295691 (2020-12-04 18:30) n = int(input()) #size m = int(input()) info = [] for i in range(n): info.append([e for e in input().split() if e != '']) def win_horizontal(n,m,player): # player is string for i in range(n): c = 0 for j in range(n): if info[i][j] == player: c += 1 else: c = 0 if c == m: return True return False def win_vertical(n,m,player): # player is string for j in range(n): c = 0 for i in range(n): if info[i][j] == player: c += 1 else: c = 0 if c == m: return True return False def win_cross1(n,m,player): for i in range(n): for j in range(n): #start row = i col = j c = 0 while row+1 <= n and col+1 <= n: #00 11 22 33 44 , 01 12 23 34 , 02 13 24, 03,14 , 04 if info[row][col] == player: c += 1 else: c = 0 if c == m: return True row += 1 col += 1 return False info_cross2 = info[::-1] def win_cross2(n,m,player): for i in range(n): for j in range(n): #start row = i col = j c = 0 while row+1 <= n and col+1 <= n: #00 11 22 33 44 , 01 12 23 34 , 02 13 24, 03,14 , 04 if info_cross2[row][col] == player: c += 1 else: c = 0 if c == m: return True row += 1 col += 1 return False def player_win(n,m,player): return win_horizontal(n,m,player) or win_vertical(n,m,player) or win_cross1(n,m,player) or win_cross2(n,m,player) def error(info): for i in range(n): for j in range(n): if info[i][j] not in '012': return True return False def notover(info): for i in range(n): for j in range(n): if info[i][j] == '0': return True return False if ( player_win(n,m,'1') and player_win(n,m,'2') ) or error(info): print('ERROR') elif player_win(n,m,'1'): print('1 WIN') elif player_win(n,m,'2'): print('2 WIN') elif notover(info): print('NOT OVER') else: print('DRAW') #print(win_horizontal(n,m,'1')) #print(win_horizontal(n,m,'2')) #print(win_vertical(n,m,'1')) #print(win_vertical(n,m,'2')) #print(win_cross1(n,m,'1')) #print(win_cross2(n,m,'1')) |
# 6331333621 1295866 (2020-12-04 21:04) n=int(input()) m=int(input()) b=[] score={} ans=set() error=False notover=False for i in range(n): a=input().split() for i in a: if i not in "012": error=True if i=="0": notover=True b.append(a) for i in range(n): for j in range(n): if j!=0: if b[i][j]!=b[i][j-1]: score[b[i][j-1]]=0 if b[i][j] in score: score[b[i][j]]+=1 else: score[b[i][j]]=1 if score[b[i][j]]==m: ans.add(b[i][j]) score={} for j in range(n): if j!=0: if b[j][i]!=b[j-1][i]: score[b[j][i]]=0 if b[j][i] in score: score[b[j][i]]+=1 else: score[b[j][i]]=1 if score[b[j][i]]==m: ans.add(b[j][i]) score={} i=0 for j in range(n-1,-1,-1): while i!=n and j!=n: if i!=0: if b[j][i]!=b[j-1][i-1]: score[b[j][i]]=0 if b[j][i] in score: score[b[j][i]]+=1 else: score[b[j][i]]=1 if score[b[j][i]]==m: ans.add(b[j][i]) i+=1 j+=1 score={} i=0 j=0 for i in range(n-1,-1,-1): while i!=n and j!=n: if j!=0: if b[j][i]!=b[j-1][i-1]: score[b[j][i]]=0 if b[j][i] in score: score[b[j][i]]+=1 else: score[b[j][i]]=1 if score[b[j][i]]==m: ans.add(b[j][i]) i+=1 j+=1 j=0 score={} j=0 for i in range(n): while i!=-1 and j!=n: if j!=0: if b[j][i]!=b[j-1][i+1]: score[b[j][i]]=0 if b[j][i] in score: score[b[j][i]]+=1 else: score[b[j][i]]=1 if score[b[j][i]]==m: ans.add(b[j][i]) i-=1 j+=1 j=0 score={} i=n-1 for j in range(1,n): while i!=-1 and j!=n: if i!=n-1: if b[j][i]!=b[j-1][i+1]: score[b[j][i]]=0 if b[j][i] in score: score[b[j][i]]+=1 else: score[b[j][i]]=1 if score[b[j][i]]==m: ans.add(b[j][i]) i-=1 j+=1 i=n-1 score={} if error: print("ERROR") elif len(ans)==3: print("ERROR") elif len(ans)==2: if "0" in ans: for i in ans: if i!= "0": print(i+" WIN") else: print("ERROR") elif len(ans)==1: for i in ans: if i!="0": print(i,"WIN") else: print("NOT OVER") elif len(ans)==0: if notover: print("NOT OVER") else: print("DRAW") |
# 6331334221 1296032 (2020-12-04 23:26) n=int(input()) k=int(input()) board=[] for i in range(n): e=input().split() board.append(e) onewin=False twowin=False b=['1','2','0'] checktable=True checkzero=True for i in board: for t in i: if t not in b: checktable=False for i in board: if '0' in i : checkzero=False for i in range(n): if onewin : break for j in range(n): if onewin: break c=0 d=0 f=0 p=0 for y in range(1,k): if i < n-(k-1): if board[i][j]==board[i+y][j]=='1': c+=1 if i < n-(k-1) and j< n-(k-1): if board[i][j]==board[i+y][j+y]=='1': d+=1 if j< n-(k-1): if board[i][j]==board[i][j+y]=='1': f+=1 if i < n-(k-1) and j> n-(k-1): if board[i][j]==board[i+y][j-y]=='1': p+=1 if c==k-1 or d==k-1 or f==k-1 or p==k-1 : onewin = True for i in range(n): if twowin : break for j in range(n): if twowin: break c=0 d=0 f=0 p=0 for y in range(1,k): if i < n-(k-1): if board[i][j]==board[i+y][j]=='2': c+=1 if i < n-(k-1) and j< n-(k-1): if board[i][j]==board[i+y][j+y]=='2': d+=1 if j< n-(k-1): if board[i][j]==board[i][j+y]=='2': f+=1 if i < n-(k-1) and j> n-(k-1): if board[i][j]==board[i+y][j-y]=='2': p+=1 if c==k-1 or d==k-1 or f==k-1 or p==k-1 : twowin = True if checktable == False: print('ERROR') else: if onewin == False and twowin == False: if checkzero == True: print('DRAW') if checkzero == False: print('NOT OVER') if onewin == True and twowin==True: print('ERROR') if onewin == True and twowin ==False: print('1 WIN') if onewin == False and twowin ==True: print('2 WIN') |
# 6331337121 1288380 (2020-11-17 11:10) n=int(input()) m=int(input()) data=[] for i in range(n): data.append([int(x) for x in input().split()]) b=False for i in data: if b: break for j in i: if j not in [0,1,2]: print('ERROR') b=True break import numpy as np if not b: data=np.array(data) data1=data!=1 data2=data!=2 win=[False,False] for i in range(n-m+1): for j in range(n): if np.sum(data2[j,i:i+m])==0: win[1]=True if np.sum(data2[i:i+m,j])==0: win[1]=True if np.sum(data1[j,i:i+m])==0: win[0]=True if np.sum(data1[i:i+m,j])==0: win[0]=True for i in range(n-m+1): for j in range(n-m+1): if np.sum(data2[range(i,i+m),range(j,j+m)])==0: win[1]=True if np.sum(data2[range(i+m-1,i-1,-1),range(j,j+m)])==0: win[1]=True if np.sum(data1[range(i,i+m),range(j,j+m)])==0: win[0]=True if np.sum(data1[range(i+m-1,i-1,-1),range(j,j+m)])==0: win[0]=True if win[0] and win[1]: print('ERROR') elif win[0]: print('1 WIN') elif win[1]: print('2 WIN') elif not win[0] and not win[1] and 0 in data: print('NOT OVER') elif not win[0] and not win[1]: print('DRAW') |
# 6331338821 1296218 (2020-12-05 16:02) n = int(input()) m = int(input()) table = [] winner = set() out = set() for i in range(n): row = input().split() if len(out) == 0: for ele in row: if ele not in "012": out.add("ERROR") elif ele == "0": out.add("NOT OVER") row = "".join(row) table.append(row) #เช็คแนวนอน for r in table: if "1"*m in r: winner.add(1) elif "2"*m in r: winner.add(2) #เช็คแนวตั้ง for i in range(n): vert = "".join([table[j][i] for j in range(n)]) if "1"*m in vert: winner.add(1) elif "2"*m in vert: winner.add(2) #เช็คทแยง for i in range(n-m+1): zza = "".join([table[a][i+a] for a in range(n-i)]) zzb = "".join([table[i+a][a] for a in range(n-i)]) zzc = "".join([table[a][n-i-a-1] for a in range(n-i)]) zzd = "".join([table[i+a][n-a-1] for a in range(n-i)]) if "1"*m in zza: winner.add(1) elif "2"*m in zza: winner.add(2) elif "1"*m in zzb: winner.add(1) elif "2"*m in zzb: winner.add(2) elif "1"*m in zzc: winner.add(1) elif "2"*m in zzc: winner.add(2) elif "1"*m in zzd: winner.add(1) elif "2"*m in zzd: winner.add(2) if len(winner) == 0: k = "DRAW" elif len(winner) == 1: if 1 in winner: k = "1 WIN" elif 2 in winner: k = "2 WIN" elif len(winner) == 2: out.add("ERROR") if "ERROR" in out: print("ERROR") else: if k == "DRAW": if "NOT OVER" in out: print("NOT OVER") else: print(k) else: print(k) |
# 6331340021 1295658 (2020-12-04 17:43) n = int(input()) m = int(input()) board = [] winner = [] vertical = [] rightdiagonal = [] leftdiagonal = [] rd = 0 ld = 0 check = 1 check2 = 1 for i in range(n): row = input().split() board.append(row) for b in board: for i in b: if i not in "012": print("ERROR") check = 0 break if check == 1: for i in range(len(board)): # Horizontal for j in range(len(board[0])-m+1): if "1"*m in "".join(board[i][j:j+m]) and "1" not in winner: winner.append("1") if "2"*m in "".join(board[i][j:j+m]) and "2" not in winner: winner.append("2") for j in range(len(board[0])): # Vertical for i in range(len(board)): vertical.append(board[i][j]) if "1"*m in "".join(vertical) and "1" not in winner: winner.append("1") if "2"*m in "".join(vertical) and "2" not in winner: winner.append("2") else: vertical = [] for i in range(len(board)-m+1): # Right Diagonal for j in range(len(board[0])-m+1): for rd in range(m): rightdiagonal.append(board[rd+i][rd+j]) if "1"*m in "".join(rightdiagonal) and "1" not in winner: winner.append("1") if "2"*m in "".join(rightdiagonal) and "2" not in winner: winner.append("2") else: rightdiagonal = [] for i in range(len(board)-m+1): # Left Diagonal for j in range(len(board[0])-1, m-2, -1): for ld in range(m): leftdiagonal.append(board[i+ld][j-ld]) if "1"*m in "".join(leftdiagonal) and "1" not in winner: winner.append("1") if "2"*m in "".join(leftdiagonal) and "2" not in winner: winner.append("2") else: leftdiagonal = [] if check == 1: if len(winner) > 1: print("ERROR") elif len(winner) == 1: print(winner[0] + " WIN") elif len(winner) == 0: for b in board: for i in b: if i == "0" and check2 == 1: print("NOT OVER") check2 = 0 if check2 == 1: print("DRAW") |
# 6331341621 1296439 (2020-12-06 21:03) import numpy as np n = int(input().strip()) bingo = int(input().strip()) set_012 = set(['1','2','0']) check_error = True table_list = [] for i in range(n): inp = input().strip().split() if set_012|set(inp)!= set_012: check_error =False table_list.append(inp) table = np.array(table_list) one_win = False two_win = False check_one = ['1']*bingo check_two = ['2']*bingo table_t = table.T table_t_list = table_t.tolist() table_inverse_list = table[::,::-1].tolist() table_inverse_t_list = table[::,::-1].T.tolist() if check_error: for r in range(n): for c in range(n-bingo+1): a = table_list[r][c:c+bingo] if table_list[r][c:c+bingo] == check_one : one_win = True if table_list[r][c:c+bingo] == check_two: two_win = True for r in range(n): for c in range(n-bingo+1): if table_t_list[r][c:c+bingo] == check_one : one_win = True if table_t_list[r][c:c+bingo] == check_two: two_win = True for i in range(n-bingo+1): for j in range(i,n-bingo+1): op = [] c = 0 while c != bingo: op.append(table_list[j-i][j]) c +=1 j +=1 if op == check_one: one_win = True if op ==check_two: two_win = True for i in range(n-bingo+1): for j in range(i,n-bingo+1): op = [] c = 0 while c != bingo: op.append(table_t_list[j-i][j]) c +=1 j +=1 if op == check_one: one_win = True if op ==check_two: two_win = True for i in range(n-bingo+1): for j in range(i,n-bingo+1): op = [] c = 0 while c != bingo: op.append(table_inverse_list[j-i][j]) c +=1 j +=1 if op == check_one: one_win = True if op ==check_two: two_win = True for i in range(n-bingo+1): for j in range(i,n-bingo+1): op = [] c = 0 while c != bingo: op.append(table_inverse_t_list[j-i][j]) c +=1 j +=1 if op == check_one: one_win = True if op ==check_two: two_win = True if one_win and two_win ==False: print('1 WIN') elif one_win==False and two_win: print('2 WIN') elif one_win==False and two_win ==False: over = np.count_nonzero(table=='0') if over ==0: print('DRAW') else: print('NOT OVER') elif one_win and two_win: print('ERROR') else: print('ERROR') |
# 6331342221 1287946 (2020-11-17 10:01) import numpy as np n = int(input()) m = int(input()) board = [[int(e) for e in input().strip().split()] for row in range(n)] b = np.array(board, dtype=np.uint8) xwin = False owin = False error = False xm = np.array([1] * m, dtype=np.uint8) om = np.array([2] * m, dtype=np.uint8) #horizontal for r in range(n): row = b[r] for c in row: if not c in [0,1,2]: error = True for c in range(n - m + 1): if (row[c:c+m] == xm).all(): xwin = True if (row[c:c+m] == om).all(): owin = True # vertical for c in range(n): col = b[:,c] for c in range(n - m + 1): if (col[c:c+m] == xm).all(): xwin = True if (col[c:c+m] == om).all(): owin = True #diag SE for r in range(n - m + 1): for c in range(n - m + 1): diag = b[range(r, r+m), range(c, c+m)] if (diag == xm).all(): xwin = True if (diag == om).all(): owin = True #diag SW for r in range(n - m + 1): for c in range(m ,n): diag = b[range(r, r+m), range(c, c-m, -1)] if (diag == xm).all(): xwin = True if (diag == om).all(): owin = True if error: print("ERROR") elif owin and xwin: print("ERROR") elif owin: print("2 WIN") elif xwin: print("1 WIN") else: print("DRAW") |
# 6331343921 1288139 (2020-11-17 10:45) def impurecheck(board): for l in board: for e in l: if e not in '012':return True return False def notovercheck(board): for l in board: for e in l: if e == '0':return True return False def horcheck(board,m,n,p): for i in range(m): #4 for j in range(m-n+1): #3 if board[i][j:j+n] == [p]*n: return True return False def vercheck(board,m,n,p): for i in range(m): for j in range(m-n+1): r = [l[i] for l in board] if r[j:j+n] == [p]*n: return True return False def dialcheck(board,m,n,p): for i in range(m-n+1): for j in range(m-n+1): l = [board[i+k][j+k]for k in range(n)] for d in range(m-n+1): if [p]*n == l[d:d+n] : return True return False def diarcheck(board,m,n,p): for i in range(m-n+1): for j in range(n-1,m): l = [board[i+k][j-k]for k in range(n)] for d in range(m-n+1): if [p]*n == l[d:d+n] : return True return False win1 = False win2 = False m = int(input()) n = int(input()) board = [input().split() for i in range(m)] if impurecheck(board): print('ERROR') else: if horcheck(board,m,n,'1') or vercheck(board,m,n,'1') or\ dialcheck(board,m,n,'1') or diarcheck(board,m,n,'1'): win1 = True if horcheck(board,m,n,'2') or vercheck(board,m,n,'2') or\ dialcheck(board,m,n,'2') or diarcheck(board,m,n,'2'): win2 = True if win1 and win2: print('ERROR') elif win1: print('1 WIN') elif win2: print('2 WIN') elif notovercheck(board): print('NOT OVER') else: print('DRAW') |
# 6331344521 1296006 (2020-12-04 22:54) n = int(input()) req = int(input()) mp = [] for i in range(n) : t = input().split() mp.append([i.strip() for i in t]) win = [False,False] zeros = False error = False check = ['1','2'] for chk in range(2) : for i in range(len(mp)) : for j in range(len(mp[i])) : if error or (mp[i][j] != '0' and mp[i][j] != '1' and mp[i][j] != '2') : error = True continue if mp[i][j] == check[(chk+1)%2] or mp[i][j] == '0': if mp[i][j] == '0': zeros = True continue # แนวนอน tx = 1 count = 1 if count == req : # print("yes") win[chk] = True while not win[chk] and i+tx < n and mp[i+tx][j] == check[chk]: count += 1 if count == req : # print("yes") win[chk] = True tx += 1 # แนวตั้ง ty = 1 count = 1 if count == req : # print("yes") win[chk] = True while not win[chk] and j+ty < n and mp[i][j+ty] == check[chk]: count += 1 if count == req : win[chk] = True ty += 1 # เฉียงลงขวา tx = 1 ty = 1 count = 1 if count == req : # print("yes") win[chk] = True while not win[chk] and i+tx < n and j+ty < n and mp[i+tx][j+ty] == check[chk]: count += 1 if count == req : win[chk] = True tx += 1 ty += 1 # เฉียงลงซ้าย tx = -1 ty = 1 count = 1 if count == req : # print("yes") win[chk] = True while not win[chk] and i+tx >= 0 and j+ty < n and mp[i+tx][j+ty] == check[chk]: count += 1 if count == req : win[chk] = True tx -= 1 ty += 1 if (win[0] and win[1]) or error: print("ERROR") elif not win[0] and not win[1]: if not zeros : print("DRAW") else : print("NOT OVER") elif win[0] : print("1 WIN") elif win[1] : print("2 WIN") # 3 # 3 # 2 2 1 # 2 1 2 # 1 2 2 |
# 6331345121 1295934 (2020-12-04 21:53) board = [] is_error = False n = int(input()) m = int(input()) def check(row, col, color): idx1, idx2 = n-1, 0 for i in range(col, n): if board[row][i] != color: idx1 = i-1 break for i in range(col, -1, -1): if board[row][i] != color: idx2 = i+1 break if idx1 - idx2 + 1>= m: return True idx1, idx2 = n-1, row for i in range(row, n): if board[i][col] != color: idx1 = i-1 break for i in range(row, -1, -1): if board[i][col] != color: idx2 = i+1 break if idx1 - idx2 + 1>= m: return True idx1 = 0 for i in range(n): if (row + i >= n or col + i >= n) or board[row+i][col+i] != color: idx1 = i-1 break idx2 = 0 for i in range(n): if (row - i < 0 or col - i < 0) or board[row-i][col-i] != color: idx2 = i-1 break if idx1 + idx2 + 1>= m: return True idx1 = 0 for i in range(n): if (row - i < 0 or col + i >= n) or board[row-i][col+i] != color: idx1 = i-1 break idx2 = 0 for i in range(n): if (row + i >= n or col - i < 0) or board[row+i][col-i] != color: idx2 = i-1 break if idx1 + idx2 + 1>= m: return True return False found_zero = False for i in range(n): x = [int(e) for e in input().split()] for e in x: if e not in [0, 1, 2]: is_error = True if e == 0: found_zero =True board.append(x) o_win = False x_win = False for i in range(n): for j in range(n): if check(i, j, board[i][j]): if board[i][j] == 1: x_win = True else: o_win = True if is_error or (o_win and x_win): print('ERROR') elif o_win: print('2 WIN') elif x_win: print('1 WIN') elif not found_zero: print('DRAW') else: print('NOT OVER') |
# 6331346821 1296596 (2020-12-09 10:23) a = [] n = int(input()) con = int(input()) found_0= False found_1= False found_2= False found_else= False for i in range(n): a.append(input().strip().split()) for i in range(n): for y in range(n): if a[i][y] !="0" and a[i][y] !="1" and a[i][y] !="2": found_else = True; break for i in range(n): for y in range(n): if a[i][y]=="0": found_0 = True; break for i in range(n-con+1): for z in range(n): if found_1 == True: break else: for y in range(con): if a[z][i+y]== "1": found_1 = True else: found_1 = False;break for i in range(n-con+1): for z in range(n): if found_2 == True: break else: for y in range(con): if a[z][i+y]== "2": found_2 = True else: found_2 = False;break for i in range(n-con+1): for z in range(n): if found_1 == True: break else: for y in range(con): if a[i+y][z]== "1": found_1 = True else: found_1 = False;break for i in range(n-con+1): for z in range(n): if found_2 == True: break else: for y in range(con): if a[i+y][z]== "2": found_2 = True else: found_2 = False;break for i in range(n-con+1): for z in range(n-con+1): if found_1 == True: break else: for y in range(con): if a[z+y][i+y]== "1": found_1 = True else: found_1 = False;break for i in range(n-con+1): for z in range(n-con+1): if found_2 == True: break else: for y in range(con): if a[z+y][i+y]== "2": found_2 = True else: found_2 = False;break for i in range(n-con+1): for z in range(n-con+1): if found_1 == True: break else: for y in range(con): if a[z+y][-i-y-1]== "1": found_1 = True else: found_1 = False;break for i in range(n-con+1): for z in range(n-con+1): if found_2 == True: break else: for y in range(con): if a[z+y][-i-y-1]== "2": found_2 = True else: found_2 = False;break if found_else or (found_1 == True and found_2 == True) : print('ERROR') elif found_1 == True and found_2 == False: print("1 WIN") elif found_2 == True and found_1 == False: print("2 WIN") elif not(found_1 or found_2) and (found_0): print("NOT OVER") elif not(found_1 or found_2) and not(found_0): print("DRAW") else:pass |
# 6331348021 1296109 (2020-12-05 02:19) size = int(input()) n = int(input()) a = [] for i in range(size): b = input().split() a += [b] x = [] for i in range(size): for j in range(0, size-n+1): x.append(a[i][j:j+n]) y = [] z = [] j = 0 while j < size: for i in range(size): if j < size: y.append(a[i][j]) z += [y] y = [] j += 1 if j == size: break for i in range(len(z)): for j in range(0, size-n+1): x.append(z[i][j:j+n]) i = 0 j = 0 z = [] while i < size: while j < size: z.append(a[i][j]) break i += 1 j += 1 for i in range(0, size-n+1): x.append(z[i:i+n]) y = [] z = [] i = 0 j = 1 k = 0 while i < size: j += k if j == size: break while j < size: y.append(a[i][j]) i += 1 j += 1 if len(y) >= n: z.append(y) y = [] k += 1 i = 0 j = 1 for i in range(len(z)): for j in range(0, size-n+1): if len(z[i][j:j+n]) == n: x.append(z[i][j:j+n]) y = [] z = [] i = 1 j = 0 k = 0 while j < size: i += k if i == size: break while i < size: y.append(a[i][j]) i += 1 j += 1 if len(y) >= n: z.append(y) y = [] k += 1 i = 1 j = 0 for i in range(len(z)): for j in range(0, size-n+1): if len(z[i][j:j+n]) == n: x.append(z[i][j:j+n]) i = 0 j = size - 1 z = [] while i < size: while j >= 0: z.append(a[i][j]) break i += 1 j -= 1 for i in range(0, size-n+1): x.append(z[i:i+n]) y = [] z = [] i = 0 j = size - 2 k = 0 while i >= 0: j -= k if j < 0: break while j >= 0: y.append(a[i][j]) i += 1 j -= 1 if len(y) >= n: z.append(y) y = [] k += 1 i = 0 j = size - 2 for i in range(len(z)): for j in range(0, size-n+1): if len(z[i][j:j+n]) == n: x.append(z[i][j:j+n]) y = [] z = [] i = 1 j = size - 1 k = 0 while j < size: i += k if i == size: break while i < size: y.append(a[i][j]) i += 1 j -= 1 if len(y) >= n: z.append(y) y = [] k += 1 i = 1 j = size - 1 for i in range(len(z)): for j in range(0, size-n+1): if len(z[i][j:j+n]) == n: x.append(z[i][j:j+n]) c = [] d = 0 e = 0 for i in range(len(x)): if (x[i] == ['1']*n) or (x[i] == ['2']*n): c.append(x[i]) for i in range(len(x)): for j in range(n): if x[i][j] == '0': d += 1 if x[i][j] not in ['0', '1', '2']: e += 1 if ((['1']*n in c) and (['2']*n in c)) or (e > 0): print('ERROR') elif (c == []) and d > 0: print('NOT OVER') elif (c == []) and d == 0: print('DRAW') elif (['1']*n in c) and (['2']*n not in c) and (e == 0): print('1 WIN') elif (['2']*n in c) and (['1']*n not in c) and (e == 0): print('2 WIN') |
# 6331349721 1295963 (2020-12-04 22:17) n=int(input()) m=int(input()) x=[] for i in range(n): k=input().split() x.append(k) def checker(n,m,board): c=0 p1_win=False p2_win=False for i in range(n): for j in range(n): if int(x[i][j])>2 or int(x[i][j])<0: return 'ERROR' if x[i][j]=='1'and i+m<=n : for a in range(m): if x[i+a][j]=='1' : c+=1 else: break if c==m : p1_win=True c=0 if x[i][j]=='1'and j+m<=n : for a in range(m): if x[i][j+a]=='1' : c+=1 else: break if c==m : p1_win=True c=0 if x[i][j]=='2'and i+m<=n : for a in range(m): if x[i+a][j]=='2' : c+=1 else: break if c==m : p2_win=True c=0 if x[i][j]=='2'and j+m<=n : for a in range(m): if x[i][j+a]=='2' : c+=1 else: break if c==m : p2_win=True c=0 if x[i][j]=='1' and i+m<=n and j+m<=n : for a in range(m): if x[i+a][j+a]=='1' : c+=1 else: break if c==m : p1_win=True c=0 if x[i][j]=='2' and i+m<=n and j+m<=n : for a in range(m): if x[i+a][j+a]=='2' : c+=1 else: break if c==m : p2_win=True c=0 if x[i][j]=='1' and i-m>=-1 and j+m<=n : for a in range(m): if x[i-a][j+a]=='1' : c+=1 else: break if c==m : p1_win=True c=0 if x[i][j]=='2' and i-m>=-1 and j+m<=n : for a in range(m): if x[i-a][j+a]=='2' : c+=1 else: break if c==m : p2_win=True c=0 if p1_win and p2_win: return 'ERROR' if p1_win : return '1 WIN' if p2_win : return '2 WIN' for i in range(n): for j in range(n): if x[i][j]=='0': return 'NOT OVER' return 'DRAW' print(checker(n,m,x)) |
# 6332001421 1287941 (2020-11-17 10:00) n=int(input()) m=int(input()) a=[] ch0=False wrong=False for i in range(n): a.append([]) b=input().split() for j in range(n): a[i].append(b[j]) if b[j]!='0' and b[j]!='1' and b[j]!='2': wrong=True if b[j]=='0': ch0=True ch1=False ch2=False if wrong==False : for i in range(n): for j in range(n-m+1): cnt=1 for k in range(1,m): if a[i][j+k-1]!=a[i][j+k]: break cnt+=1 if cnt==m : if a[i][j]=='1' : ch1=True elif a[i][j]=='2': ch2=True for j in range(n): for i in range(n-m+1): cnt=1 for k in range(1,m): if a[i+k-1][j]!=a[i+k][j]: break cnt+=1 if cnt==m : if a[i][j]=='1' : ch1=True elif a[i][j]=='2': ch2=True for i in range(n-m+1): for j in range(n-m+1): cnt=1 for k in range(1,m): if a[i+k-1][j+k-1]!=a[i+k][j+k]: break cnt+=1 if cnt==m : if a[i][j]=='1' : ch1=True elif a[i][j]=='2': ch2=True for i in range(n-m+1): for j in range(m-1,n,1): cnt=1 for k in range(1,m): if a[i+k-1][j-k+1]!=a[i+k][j-k]: break cnt+=1 if cnt==m : if a[i][j]=='1' : ch1=True elif a[i][j]=='2': ch2=True if wrong or(ch1 and ch2): print('ERROR') elif ch1: print('1 WIN') elif ch2: print('2 WIN') elif ch0: print('NOT OVER') else: print('DRAW') |
# 6332002021 1295994 (2020-12-04 22:41) def solve(arr,n,m,s) : pat = [s for i in range(m)] for i in range(n) : for j in range(n-m+1) : if arr[i][j:j+m] == pat : return True for j in range(n) : for i in range(n-m+1) : t = list() for k in range(m): t.append(arr[i+k][j]) if t == pat : return True for i in range(n-m+1) : for j in range(n-m+1) : t = list() for k in range(m) : t.append(arr[i+k][j+k]) if t == pat : return True for i in range(n-m+1) : for j in range(n-1,m-2,-1) : t = list() for k in range(m) : t.append(arr[i+k][j-k]) if t == pat : return True return False def checkError(arr,n,m) : for i in range(n) : for j in range(n) : if arr[i][j] not in ['0','1','2'] : return True return solve(arr,n,m,'1') and solve(arr,n,m,'2') def checkZero(arr,n): for i in range(n): for j in range(n): if arr[i][j] == '0': return True return False def main() : arr = list() n = int(input()) m = int(input()) for i in range(n) : t = input().split() arr.append(t) if checkError(arr,n,m) : print('ERROR') elif solve(arr,n,m,'1') : print('1 WIN') elif solve(arr,n,m,'2') : print('2 WIN') elif checkZero(arr,n) : print('NOT OVER') else : print('DRAW') main() |
# 6332003721 1296309 (2020-12-05 22:54) import numpy as np def InputData() : n = int(input()) m = int(input()) col = [] for i in range(n) : row = [int(e) for e in input().split()] col.append(row) return np.array(col),n,m def samearray(a,b): if len(a) != len(b) : return False for i in range(len(a)) : if a[i] != b[i] : return False return True def checkCross(mat,m,player): # \ cont =0 i = 0 j = 0 while 0<=i<len(mat) and 0<=j<len(mat) : if i - 1 >= 0 and j-1>=0 and mat[i-1][j-1]==mat[i][j] and mat[i][j]==player : cont+=1 elif mat[i][j]==player : cont = 1 else : cont =0 i+=1 j+=1 if cont == m : return True # / cont =0 i = 0 j = len(mat)-1 while 0<=i<len(mat) and 0<=j<len(mat) : if i - 1 >= 0 and j+1 <len(mat) and mat[i-1][j+1]==mat[i][j] and mat[i][j]==player : cont+=1 elif mat[i][j]==player : cont = 1 else : cont = 0 i+=1 j-=1 if cont == m : return True return False def isWin(mat,player,m): #print(mat) y = np.array([player for e in range(m)]) ans = False for i in range(len(mat)) : for j in range(len(mat[i])) : if i == 0 and samearray(mat[i:i+m,j],y): return True if j == 0 and samearray(mat[i,j:j+m],y) : return True ans |= checkCross(mat,m,player) return ans def calculater(mat,n,m) : player1 = False player2 = False HaveZero = False HaveError = False for i in range(len(mat)) : for j in range(len(mat[i])) : if i+m<=len(mat) and j+m <= len(mat[i]) : player1 |= isWin(mat[i:i+m,j:j+m],1,m) player2 |= isWin(mat[i:i+m,j:j+m],2,m) if mat[i][j] == 0 : HaveZero = True if mat[i][j] not in [1,2,0] : HaveError = True player1 |= checkCross(mat,m,1) player2 |= checkCross(mat,m,2) return player1,player2,HaveZero ,HaveError data,n,m = InputData() HaveError = False player1,player2,HaveZero ,HaveError = calculater(data,n,m) if HaveError or (player1 and player2) : print('ERROR') elif not player1 and not player2 : if HaveZero : print("NOT OVER") else : print("DRAW") else : if player1 : print("1 WIN") elif player2 : print("2 WIN") |
# 6332004321 1295952 (2020-12-04 22:07) size = int(input().strip()) m = int(input().strip()) xwin = False owin = False error = False not_over = False board = [] xcon = "1" * m ocon = "2" * m for _ in range(size): row = input().strip().split() if len([a for a in row if a not in ["0", "1", "2"]]) > 0: error = True if "0" in row: not_over = True board.append("".join(row)) for i in range(size): row = board[i] column = "".join([board[a][i] for a in range(size)]) if row.find(xcon) != -1 or column.find(xcon) != -1: xwin = True if row.find(ocon) != -1 or column.find(ocon) != -1: owin = True dia = [] #top left dia.append("".join([board[i][i] for i in range(size)])) for x_mar in range(1, size-m+1): d = "".join([board[i][x_mar+i] for i in range(size-x_mar)]) dia.append(d) for y_mar in range(1, size-m+1): d = "".join([board[y_mar+i][i] for i in range(size-y_mar)]) dia.append(d) #top right dia.append("".join([board[i][size-i-1] for i in range(size-1, -1, -1)])) for x_mar in range(1, size-m+1): d = "".join([board[x_mar+i][size-1-i] for i in range(size-x_mar)]) dia.append(d) for y_mar in range(1, size-m+1): d = "".join([board[size-y_mar-i-1][i] for i in range(size-y_mar)]) dia.append(d) for d in dia: if d.find(xcon) != -1: xwin = True if d.find(ocon) != -1: owin = True if error: print("ERROR") elif xwin and owin: print("ERROR") elif xwin: print("1 WIN") elif owin: print("2 WIN") elif not_over: print("NOT OVER") else: print("DRAW") |
# 6332006621 1295624 (2020-12-04 16:14) size = int(input()) num = int(input()) board = [] error = False over = True winner = set() champ = '' for i in range(size): k = input().split() for e in k: if e not in '012': error = True if e == '0': over = False board.append(k) if error == True: print('ERROR') else: for i in range(size): for j in range(size-num+1): check = set() for run in range(num): player = board[i][j+run] check.add(board[i][j+run]) if len(check) == 1 and '0' not in check: winner.add(player) champ = player for i in range(size-num+1): for j in range(size): check = set() for run in range(num): player = board[i+run][j] check.add(board[i+run][j]) if len(check) == 1 and '0' not in check: winner.add(player) champ = player for i in range(size-num+1): for j in range(size-num+1): check = set() for run in range(num): player = board[i+run][j+run] check.add(board[i+run][j+run]) if len(check) == 1 and '0' not in check: winner.add(player) champ = player for i in range(size-num+1): for j in range(size-num+1): check = set() for run in range(num): player = board[size-i-1-run][j+run] check.add(board[size-i-1-run][j+run]) if len(check) == 1 and '0' not in check: winner.add(player) champ = player if len(winner) == 0: if over == True: print('DRAW') if over == False: print('NOT OVER') elif len(winner) == 1: print(champ + ' WIN') else: print('ERROR') |
# 6332008921 1288403 (2020-11-17 11:12) def check(a,x,y,n,m): cnt = 0 for i in range(m): if x+i>=n or a[x+i][y] != a[x][y]: cnt += 1 break for i in range(m): if y+i>=n or a[x][y+i] != a[x][y]: cnt += 1 break for i in range(m): if x+i>=n or y+i>=n or a[x+i][y+i] != a[x][y]: cnt += 1 break for i in range(m): if x+i>=n or y-i<0 or a[x+i][y-i] != a[x][y]: cnt += 1 break return cnt<4 n = int(input()) m = int(input()) a = [] xwin = False owin = False zero = False error = False for i in range(n): b = input().split() a.append(b) for i in range(n): for j in range(n): if a[i][j] == '1': if check(a,i,j,n,m) == True: xwin = True elif a[i][j] == '2': if check(a,i,j,n,m) == True: owin = True elif a[i][j] == '0': zero = True else: error = True if error == True: print('ERROR') elif xwin == True: if owin == True: print('ERROR') else: print('1 WIN') elif xwin == False and owin == False: if zero == True: print('NOT OVER') else: print('DRAW') else: print('2 WIN') |
# 6332009521 1295707 (2020-12-04 18:40) def check(info, status): zero = False for i in info: for j in i: if j == '0': zero = True if j != '0' and j != '1' and j != '2': return 'ERROR' if '1' in status and '2' in status: return 'ERROR' elif '1' not in status and '2' in status: return '2 WIN' elif '1' in status and '2' not in status: return '1 WIN' if zero: return 'NOT OVER' else: return 'DRAW' row = int(input()) win = int(input()) info = [input().strip().split(' ') for i in range(row)] status = '' player = ['1', '2'] # ----check_row----- for k in info: if '1'*(win) in ''.join(k): status += '1' if '2'*(win) in ''.join(k): status += '2' # ----check_col----- for i in range(row): l = [k[i] for k in info] if '1'*(win) in ''.join(l): status += '1' if '2'*(win) in ''.join(l): status += '2' # ----check_dia----- rightinfo1 = [info[0]]+[['0']*i+info[i][:-i] for i in range(1, row)] rightinfo2 = [['0']*row]+[info[i][-i:]+['0']*(row-i) for i in range(1, row)] leftinfo1 = [['0']*row]+[['0']*(row-i)+info[i][:i] for i in range(1, row)] leftinfo2 = [info[0]]+[info[i][i:]+['0']*(i) for i in range(1, row)] move = [rightinfo1, rightinfo2, leftinfo1, leftinfo2] for i in range(row): for e in move: l = [k[i] for k in e] for p in player: if p*(win) in ''.join(l): status += p print(check(info, status)) |
# 6332011721 1287986 (2020-11-17 10:09) size = int(input()) win = int(input()) table = list() error=0 win_p = dict() zero_count=0 for i in range(size): table.append(input().split(" ")) for i in range(size): for j in range(size): now=table[i][j] if(now=='0'): zero_count=1 if(now!='0' and now!='1' and now!='2'): error=1 #check left to right count=0 if(now!='0'): for k in range(j,size): if(table[i][k]==now): count+=1 else: break if(count>=win): win_p[now]=1 #check up to dowb count=0 if(now!='0'): for k in range(i,size): if(table[k][j]==now): count+=1 else: break if(count>=win): win_p[now]=1 #check twi left to right k=0 count=0 if(now!='0'): while(i+k <size and j+k<size): if(table[i+k][j+k]==now): count+=1 k+=1 else: break if(count>=win): win_p[now]=1 #check twi right to left k=0 count=0 if(now!='0'): while(i-k <size and j+k>=0): if(table[i-k][j+k]==now): count+=1 k-=1 else: break if(count>=win): win_p[now]=1 if(error==1): print("ERROR") elif(len(win_p)>=2): print("ERROR") elif(len(win_p)==0 and zero_count==1): print("NOT OVER") elif(len(win_p)==0 and zero_count==0): print("DRAW") elif('1' in win_p): print("1 WIN") else: print("2 WIN") |
# 6332014621 1296017 (2020-12-04 23:09) n = int(input()) m = int(input()) table = [[0 for i in range(n)] for j in range(n)] ERROR_num = False Have_zero = False for i in range(n) : temp = input().split() for j in range(n): table[i][j] = int(temp[j]) if table[i][j] not in [0,1,2] : ERROR_num = True if table[i][j] == 0 : Have_zero = True if ERROR_num : print("ERROR") else : Xwin = False Owin = False for i in range(n-m+1) : for j in range(n-m+1) : ch1 = set() ch2 = set() J = n-j-1 sumdi1 = 0 sumdi2 = 0 for k in range(m) : ch1.add(table[i+k][j+k]) ch2.add(table[i+k][J-k]) sumdi1 += table[i+k][j+k] sumdi2 += table[i+k][J-k] if sumdi1 == 1*m and len(ch1) == 1: Xwin = True if sumdi1 == 2*m : Owin = True if sumdi2 == 1*m and len(ch2) == 1: Xwin = True if sumdi2 == 2*m : Owin = True for i in range(n-m+1) : for j in range(n) : sumx = 0 ch = set() for k in range(m) : ch.add(table[i+k][j]) sumx += table[i+k][j] if sumx == 1*m and len(ch) == 1: Xwin = True if sumx == 2*m : Owin = True for i in range(n) : for j in range(n-m+1) : sumy = 0 ch = set() for k in range(m) : ch.add(table[i][j+k]) sumy += table[i][j+k] if sumy == 1*m and len(ch) == 1: Xwin = True if sumy == 2*m : Owin = True if Xwin and Owin : print("ERROR") elif Xwin : print("1 WIN") elif Owin : print("2 WIN") elif Have_zero : print("NOT OVER") else : print("DRAW") |
# 6332015221 1295639 (2020-12-04 16:32) N = int(input()) M = int(input()) board = ([input().split() for i in range(N)]) win = [False,False,False] check = set(['0','1','2']) zero_check = False for i in range(N): for j in range(N): if board[i][j] == '0': zero_check = True #check charactor if board[i][j] not in check: print("ERROR") exit(0) # right - left if j+M-1 < N: if [board[i][j]]*M == board[i][j:j+M]: win[int(board[i][j])] = True # top - down if i + M <= N : if [board[i][j]]*M == [e[j] for e in board[i:i+M]]: win[int(board[i][j])] = True # across #direction follow reading a book if i + M <= N and j+M <= N: if [board[i][j]]*M == [board[i+x][j+x] for x in range(M)]: win[int(board[i][j])] = True if i-M+1 >= 0 and j+M <= N: if [board[i][j]]*M == [board[i-x][j+x] for x in range(M)]: win[int(board[i][j])] = True if win[1] and win[2]: print("ERROR") elif win[1]: print("1 WIN") elif win[2]: print("2 WIN") elif zero_check: print("NOT OVER") else: print("DRAW") |
# 6332016921 1295955 (2020-12-04 22:08) board = int(input()) liang = int(input()) table = [[0]*board for i in range(board)] notover = False tmp1 = 1 tmp2 = 2 win1 = False win2 = False error = False count11 = count12 = count21 = count22 = 0 for i in range(board): inp = input().split() for j in range(len(inp)): if(inp[j]=='0'): notover = True if(inp[j]>='0' and inp[j] <='2'): table[i][j] = int(inp[j]) else: error = True if(error): print("ERROR") exit(0) for i in range(board): for j in range(board - liang + 1): for k in range(0,liang): if(table[i][j+k]==1): count11+=1 if(table[i][j+k]==2): count21+=1 if(count11==liang): win1 = True if(count21==liang): win2 = True count11 = count21 = 0 count11 = count21 = 0 for i in range(board - liang + 1): for j in range(board): for k in range(0,liang): if(table[i+k][j]==1): count11+=1 if(table[i+k][j]==2): count21+=1 if(count11==liang): win1 = True if(count21==liang): win2 = True count11 = count21 = 0 count11 = count21 = 0 for i in range(board-liang+1): for j in range(board - liang + 1): for k in range(0,liang): if(table[i+k][j+k]==1): count11+=1 if(table[i+k][j+k]==2): count21+=1 if(count11==liang): win1 = True if(count21==liang): win2 = True count11 = count21 = 0 count11 = count21 = 0 for i in range(0,board - liang + 1): for j in range(board-1,liang-1,-1): for k in range(0,liang): if(table[i+k][j-k]==1): count11+=1 if(table[i+k][j-k]==2): count21+=1 if(count11==liang): win1 = True if(count21==liang): win2 = True count11 = count21 = 0 # print(win1) # print(win2) if(win1 and not win2): print("1 WIN") elif win2 and not win1: print("2 WIN") elif (not win1) and (not win2) and notover==0: print("DRAW") elif (not win1) and (not win2) and notover==1: print("NOT OVER") else: print("ERROR") |
# 6332019821 1296558 (2020-12-08 23:19) n = int(input()) m = int(input()) table = [] dic = {3:'NOT OVER',1:'1 WIN',2:'2 WIN',0:'DRAW',4:'ERROR'} sta = 0 for i in range(n): s = [int(i) for i in input().split()] table.append(s) for i in range(n): for j in range(n-m+1): ch = True last = table[i][j] if last not in {0,1,2}: sta = 4 if last == 0 and sta == 0: sta = 3 for k in range(m): if last != table[i][j+k]: ch = False break if not ch or last==0: continue if (sta == 1 or sta == 2) and sta != last: sta = 4 elif last!=0: sta = last for i in range(n): for j in range(n-m+1): last = table[j][i] ch = True if last not in {0,1,2}: sta = 4 if last == 0 and sta == 0: sta = 3 for k in range(m): if last != table[j+k][i]: ch = False break if not ch or last==0: continue if (sta == 1 or sta == 2) and sta != last: sta = 4 elif last!=0: sta = last for i in range(n-m+1): for j in range(n-m+1): last = table[i][j] ch = True if last not in {0,1,2}: sta = 4 if last == 0 and sta == 0: sta = 3 for k in range(m): if last != table[i+k][j+k]: ch = False break if not ch or last==0: continue if (sta == 1 or sta == 2) and sta != last: sta = 4 elif last!=0: sta = last for i in range(n-m+1): for j in range(m-1,n): last = table[i][j] ch = True if last not in {0,1,2}: sta = 4 if last == 0 and sta == 0: sta = 3 for k in range(m): if last != table[i+k][j-k]: ch = False break if not ch or last==0: continue if (sta == 1 or sta == 2) and sta != last: sta = 4 elif last!=0: sta = last print(dic[sta]) ''' 5 4 1 2 1 0 2 1 1 1 2 1 2 2 1 1 2 2 2 1 0 1 1 1 2 1 2 8 5 1 0 1 0 1 0 1 0 0 2 0 2 0 2 0 2 1 0 1 0 1 0 1 0 0 2 0 2 0 2 0 2 1 0 1 0 1 0 1 0 0 2 0 2 0 2 0 2 1 0 1 0 1 0 1 0 0 2 0 2 0 2 0 2 3 3 2 2 0 2 0 3 1 1 1 ''' |
# 6332020321 1288350 (2020-11-17 11:06) n = int(input()) w = int(input()) l = [] ans = "" for i in range(n): temp = input().split() l.append(temp) for i in l: for j in i: if j < '0' or j > '2': ans = "ERROR" if ans == "": for i in range(n): c = 0 for j in range(n): if l[i][j] == '1': c += 1 if c == w: ans = "1 WIN" break else: c = 0 if c == w: break for j in range(n): c = 0 for i in range(n): if l[i][j] == '1': c += 1 if c == w: ans = "1 WIN" break else: c = 0 if c == w: break for i in range(w-1,n): for j in range(n-w+1): c = 0 for k in range(w): if l[i-k][j+k] == '1': c += 1 if c == w: ans = "1 WIN" break if c == w: break for i in range(w-1,n): for j in range(n-w+1): c = 0 for k in range(w): if l[i-k][n-1-j-k] == '1': c += 1 if c == w: ans = "1 WIN" break if c == w: break for i in range(n): c = 0 for j in range(n): if l[i][j] == '2': c += 1 if c == w: if ans == "": ans = "2 WIN" break elif ans == "1 WIN": ans = "ERROR" break else: c = 0 if c == w: break for j in range(n): c = 0 for i in range(n): if l[i][j] == '2': c += 1 if c == w: if ans == "": ans = "2 WIN" break elif ans == "1 WIN": ans = "ERROR" break else: c = 0 if c == w: break for i in range(w-1,n): for j in range(n-w+1): c = 0 for k in range(w): if l[i-k][j+k] == '2': c += 1 if c == w: if ans == "": ans = "2 WIN" break elif ans == "1 WIN": ans = "ERROR" break if c == w: break for i in range(w-1,n): for j in range(n-w+1): c = 0 for k in range(w): if l[i-k][n-1-j-k] == '2': c += 1 if c == w: if ans == "": ans = "2 WIN" break elif ans == "1 WIN": ans = "ERROR" break if c == w: break if ans == "": for i in range(n): for j in range(n): if l[i][j] == '0': ans = "NOT OVER" break if l[i][j] == '0': break if ans =="": ans = "DRAW" print(ans) |
# 6332022621 1288163 (2020-11-17 10:48) n = int(input()) m = int(input()) e = [[int(e) for e in input().split()] for i in range(n)] full = True result = [False,False] error = False for i in range(n): for j in range(n): if e[i][j]!=0 and e[i][j]!=1 and e[i][j]!=2: error = True if e[i][j]==0: full = False continue if min(i,j)+1>=m: all = True for k in range(m): if e[i-k][j-k]!=e[i][j]: all = False if all and not error: result[e[i][j]-1] = True if i+1>=m and j+m<=n: all = True for k in range(m): if e[i-k][j+k]!=e[i][j]: all = False if all and not error: result[e[i][j]-1] = True if i+1>=m: all = True for k in range(m): if e[i-k][j]!=e[i][j]: all = False if all and not error: result[e[i][j]-1] = True if j+1>=m: all = True for k in range(m): if e[i][j-k]!=e[i][j]: all = False if all and not error: result[e[i][j]-1] = True if error or (result[0] and result[1]): print('ERROR') elif result[0]: print('1 WIN') elif result[1]: print('2 WIN') elif full: print('DRAW') else: print('NOT OVER') |
# 6332024921 1288280 (2020-11-17 11:02) n = int(input()) import numpy as np m = int(input()) a = np.zeros((n,n)) ch = 1 win = 0 full = 1 for i in range(n): c = input().split() for j in range(n): if not("0"<= c[j] and c[j]<="2"): ch = 0 if c[j] == "0": full = 0 a[i,j] = c[j] #sleep 1 for i in range(n): for j in range(n-m+1): ch1 = 1 for k in range(j,j+m): if a[i,k] == 0 or a[i,k] == 2: ch1 =0 if ch1 == 1: if win == 2: ch = 0 win = 1 #sleep2 for i in range(n): for j in range(n-m+1): ch2 =1 for k in range(j,j+m): if a[i,k] == 0 or a[i,k] == 1: ch2 = 0 if ch2 == 1: if win == 1: ch = 0 win = 2 #1 for i in range(n): for j in range(n-m+1): ch1 = 1 for k in range(j,j+m): if a[k,i] == 0 or a[k,i] == 2: ch1 =0 if ch1 == 1: if win == 2: ch = 0 win = 1 #2 for i in range(n): for j in range(n-m+1): ch2 = 1 for k in range(j,j+m): if a[k,i] == 0 or a[k,i] == 1: ch2 =0 if ch2 == 1: if win == 1: ch = 0 win = 2 for i in range(n-m+1): for j in range(n-m+1): ch1 = 1 for k in range(m): if a[i+k,j+k] == 0 or a[i+k,j+k] == 2: ch1 =0 if ch1 == 1: if win == 2: ch = 0 win = 1 for i in range(n-m+1): for j in range(n-m+1): ch2 = 1 for k in range(m): if a[i+k,j+k] == 0 or a[i+k,j+k] == 1: ch2 =0 if ch2 == 1: if win == 1: ch = 0 win = 2 for i in range(n-m+1): for j in range(m,n): ch1 = 1 for k in range(m): if a[i+k,j-k] == 0 or a[i+k,j-k] == 2: ch1 =0 if ch1 == 1: if win == 2: ch = 0 win = 1 for i in range(n-m+1): for j in range(m,n): ch2 = 1 for k in range(m): if a[i+k,j-k] == 0 or a[i+k,j-k] == 1: ch2 =0 if ch2 == 1: if win == 1: ch = 0 win = 2 if ch == 0: print("ERROR") elif win == 1: print("1 WIN") elif win == 2: print("2 WIN") elif win == 0 and full == 0: print("NOT OVER") elif win == 0 and full ==1: print("DRAW") """ 3 3 2 1 2 1 1 2 1 2 1 5 4 1 2 1 0 2 1 1 1 2 1 2 2 1 1 2 2 2 1 0 1 1 1 2 1 2 8 5 1 0 1 0 1 0 1 0 0 2 0 2 0 2 0 2 1 0 1 0 1 0 1 0 0 2 0 2 0 2 0 2 1 0 1 0 1 0 1 0 0 2 0 2 0 2 0 2 1 0 1 0 1 0 1 0 0 2 0 2 0 2 0 2 3 3 2 2 0 2 0 3 1 1 1 3 3 2 2 2 2 1 2 1 1 1 3 3 1 1 2 1 1 2 2 2 2 """ |
# 6332027821 1288031 (2020-11-17 10:21) N = int(input()) M = int(input()) table = [[] for i in range(N)] draw = True err = False maxx1 = 0 maxx2 = 0 def chk(pla,posx,posy,dix,diy): maxx = 0 tmp = 0 while posx < N and posy < N and posx >= 0 and posy >= 0: if table[posx][posy] == pla: tmp += 1 maxx = max(maxx,tmp) else: tmp = 0 posx += dix posy += diy return maxx for i in range(N): tmp = input() table[i] = tmp.split() for i in range(N): for j in range(N): table[i][j] = int(table[i][j]) if table[i][j] > 2: err = True if table[i][j] == 0: draw = False for i in range(N): maxx1 = max(maxx1,chk(1,0,i,1,0)) maxx2 = max(maxx2,chk(2,0,i,1,0)) maxx1 = max(maxx1,chk(1,0,i,1,1)) maxx2 = max(maxx2,chk(2,0,i,1,1)) maxx1 = max(maxx1,chk(1,0,i,1,-1)) maxx2 = max(maxx2,chk(2,0,i,1,-1)) for i in range(N): maxx1 = max(maxx1,chk(1,i,0,0,1)) maxx2 = max(maxx2,chk(2,i,0,0,1)) maxx1 = max(maxx1,chk(1,i,0,1,1)) maxx2 = max(maxx2,chk(2,i,0,1,1)) for i in range(N): maxx1 = max(maxx1,chk(1,i,N-1,1,-1)) maxx2 = max(maxx2,chk(2,i,N-1,1,-1)) if (maxx1 >= M and maxx2 >= M) or err: print('ERROR') elif maxx1 >= M: print('1 WIN') elif maxx2 >= M: print('2 WIN') else: if draw: print('DRAW') else: print('NOT OVER') |
# 6332028421 1295788 (2020-12-04 19:40) n=int(input()) m=int(input()) data=[] for i in range(n): data.append([int(e) for e in input().split()]) isWin=[False,False,False] isSpaceLeft=False isError=False for i in range(n): for j in range(n): if (data[i][j]==0):isSpaceLeft=True elif (1<=data[i][j]<=2): if (i+m-1<n): for k in range(m): if (data[i+k][j]!=data[i][j]):break else: isWin[data[i][j]]=True if (j+m-1<n): for k in range(m): if (data[i][j+k]!=data[i][j]):break else: isWin[data[i][j]]=True if (i-m+1>=0) and (j+m-1<n): for k in range(m): if (data[i-k][j+k]!=data[i][j]):break else: isWin[data[i][j]]=True if (i-m+1>=0) and (j-m+1>=0): for k in range(m): if (data[i-k][j-k]!=data[i][j]):break else: isWin[data[i][j]]=True else:isError=True if isError or (isWin[1] and isWin[2]): print("ERROR") elif isWin[1]: print("1 WIN") elif isWin[2]: print("2 WIN") elif not isSpaceLeft: print("DRAW") elif isSpaceLeft: print("NOT OVER") |
# 6332029021 1288016 (2020-11-17 10:17) n = int(input()) b = [[0 for i in range(n)] for i in range(n)] w = int(input()) one = False two = False err = False zer = False for i in range(n): k = input().split() for j in range(n): b[i][j] = k[j] if k[j] not in '012': err = True elif k[j] == '0': zer = True if err: print("ERROR") else: # row for i in range(n): r = ''.join(b[i]) #print(r) if '1'*w in r: one=True if '2'*w in r: two=True # column for i in range(n): r = ''.join([b[j][i] for j in range(n)]) #print(r) if '1'*w in r: one=True if '2'*w in r: two=True # diagonal 1: topleft -> .. si = n-1 sj = 0 for i in range(n*2-1): cs = [] ci = si cj = sj while(ci < n and cj < n): cs.append(b[ci][cj]) ci +=1 cj+=1 cs= ''.join(cs) #print(cs) if '1'*w in cs: one=True if '2'*w in cs: two=True if si>0: si-=1 else: sj+=1 # diagonal 2: botleft -> .. si = n-1 sj = n-1 for i in range(n*2-1): cs = [] ci = si cj = sj while(ci >= 0 and cj < n): cs.append(b[ci][cj]) ci -=1 cj +=1 cs= ''.join(cs) #print(cs) if '1'*w in cs: one=True if '2'*w in cs: two=True if sj > 0: sj-=1 else: si-=1 if one and two: print("ERROR") elif one: print("1 WIN") elif two: print("2 WIN") else: if zer: print("NOT OVER") else: print("DRAW") |
# 6332031221 1288003 (2020-11-17 10:14) n = int(input()) m = int(input()) tab = [[0 for i in range(n)] for i in range(n)] ans = -1 def check1(i,j,m,ch): global ans if m==0: if ans==-1 or ans==ch: ans = ch return else: print("ERROR") exit(0) if tab[i][j]==ch: check1(i+1,j,m-1,ch) def check2(i,j,m,ch): global ans if m==0: if ans==-1 or ans==ch: ans = ch return else: print("ERROR") exit(0) if tab[i][j]==ch: check2(i,j+1,m-1,ch) def check3(i,j,m,ch): global ans if m==0: if ans==-1 or ans==ch: ans = ch return else: print("ERROR") exit(0) if tab[i][j]==ch: check3(i+1,j+1,m-1,ch) def check4(i,j,m,ch): global ans if m==0: if ans==-1 or ans==ch: ans = ch return else: print("ERROR") exit(0) if tab[i][j]==ch: check4(i-1,j+1,m-1,ch) notover = 0 for i in range(n): x = input().split() for j in range(n): tab[i][j]=x[j] if x[j]=='0': notover=1 if x[j]!='0' and x[j]!='1' and x[j]!='2': print("ERROR") exit(0) for i in range(n): for j in range(n): if tab[i][j]=='0': continue if i<=n-m: check1(i,j,m,tab[i][j]) if j<=n-m: check2(i,j,m,tab[i][j]) if i<=n-m and j<=n-m: check3(i,j,m,tab[i][j]) if i>=m-1 and j<=n-m: check4(i,j,m,tab[i][j]) if ans=='1': print("1 WIN") elif ans=='2': print("2 WIN") else: if notover: print("NOT OVER") else: print("DRAW") |
# 6332032921 1287991 (2020-11-17 10:10) n = int(input()) m = int(input()) board = [] for i in range(n): board.append(list(map(int, input().split()))) winner = -1 is_zero = False for i in board: for j in i: if not 0 <= j <= 2: print('ERROR') exit() if j == 0: is_zero = True for i in range(n - m + 1): for j in range(n): prev = board[i][j] temp = True for k in range(m): if prev != board[i + k][j] or board[i + k][j] == 0: temp = False break if temp and winner == -1: winner = board[i][j] elif temp and winner != board[i][j]: print('ERROR') exit() for i in range(n): for j in range(n - m + 1): prev = board[i][j] temp = True for k in range(m): if prev != board[i][j + k] or board[i][j + k] == 0: temp = False break if temp and winner == -1: winner = board[i][j] elif temp and winner != board[i][j]: print('ERROR') exit() for i in range(n - m + 1): for j in range(n - m + 1): prev = board[i][j] temp = True for k in range(m): if prev != board[i + k][j + k] or board[i + k][j + k] == 0: temp = False break if temp and winner == -1: winner = board[i][j] elif temp and winner != board[i][j]: print('ERROR') exit() for i in range(n - m + 1): for j in range(n - 1, m - 1, - 1): prev = board[i][j] temp = True for k in range(m): if prev != board[i + k][j - k] or board[i + k][j - k] == 0: temp = False break if temp and winner == -1: winner = board[i][j] elif temp and winner != board[i][j]: print('ERROR') exit() if winner == -1 and is_zero: print('NOT OVER') elif winner == -1: print('DRAW') else: print('{} WIN'.format(winner)) |
# 6332033521 1287961 (2020-11-17 10:05) n = int(input()) m = int(input()) t = [[0 for i in range(n)] for i in range(n)] err = False win1 = False win2 = False is0 = False for i in range(n): temp = [int(i) for i in input().split()] for j in range(n): t[i][j] = temp[j] if t[i][j] != 0 and t[i][j] != 1 and t[i][j] != 2: err = True if t[i][j] == 0: is0 = True for i in range(n): for j in range(n-m+1): #print(t[i][j:j+m]) if 0 not in t[i][j:j+m] and 1 not in t[i][j:j+m]: win2 = True if 0 not in t[i][j:j+m] and 2 not in t[i][j:j+m]: win1 = True for i in range(n): for j in range(n-m+1): temp = [] for k in range(m): temp.append(t[j+k][i]) #print(temp) if 0 not in temp and 1 not in temp: win2 = True if 0 not in temp and 2 not in temp: win1 = True for i in range(n-m+1): for j in range(n-m+1): temp = [] temp2 = [] for k in range(m): temp.append(t[i+k][j+k]) temp2.append(t[i+m-k-1][j+k]) #print(i,j,temp) if 0 not in temp and 1 not in temp: win2 = True if 0 not in temp and 2 not in temp: win1 = True if 0 not in temp2 and 1 not in temp2: win2 = True if 0 not in temp2 and 2 not in temp2: win1 = True if err or (win1 and win2): print("ERROR") elif win1 and (not win2): print("1 WIN") elif win2 and (not win1): print("2 WIN") elif (not win1) and (not win2): if is0: print("NOT OVER") else: print("DRAW") |
# 6332034121 1287925 (2020-11-17 09:56) n = int(input()) m = int(input()) table = list() for i in range(n): s = input().split() tmp = [e for e in s] table.append(tmp) win_1 = False win_2 = False have_zero = False wrong_input = False for i in range(n): for j in range(n): if table[i][j] != '0' and table[i][j] != '1' and table[i][j] != '2': wrong_input = True break elif table[i][j] == '0': have_zero = True for i in range(n): for j in range(n): now = table[i][j] cnt = 0 for k in range(min(m,n-i)): if table[i+k][j] == now: cnt += 1 if now == '1' and cnt == m: win_1 = True elif now == '2' and cnt == m: win_2 = True cnt = 0 for k in range(min(m,n-j)): if table[i][j+k] == now: cnt += 1 if now == '1' and cnt == m: win_1 = True elif now == '2' and cnt == m: win_2 = True cnt = 0 for k in range(min(m,n-j,n-i)): if table[i+k][j+k] == now: cnt += 1 if now == '1' and cnt == m: win_1 = True elif now == '2' and cnt == m: win_2 = True now = table[n-i-1][j] cnt = 0 for k in range(min(m,n-j,n-i)): if table[n-i-1-k][j+k] == now: cnt += 1 if now == '1' and cnt == m: win_1 = True elif now == '2' and cnt == m: win_2 = True if wrong_input or (win_1 and win_2): print('ERROR') elif win_1 and (not win_2): print('1 WIN') elif win_2 and (not win_1): print('2 WIN') elif have_zero: print('NOT OVER') else : print('DRAW') |
# 6332035821 1288033 (2020-11-17 10:21) n = int(input()) m = int(input()) x = [] for i in range(n): x.append(input().strip().split()) ch = {'0':False, '1':False, '2':False, '3':False} for a in range(n): for b in range(n): if x[a][b] == '0': ch['0'] = True elif x[a][b] not in ['0','1','2']: ch['3'] = True else: if a+m <= n: if sum([1 for i in range(m) if x[a+i][b] == x[a][b]]) == m: ch[x[a][b]] = True if b+m <= n: if sum([1 for i in range(m) if x[a+i][b+i] == x[a][b]]) == m: ch[x[a][b]] = True if b+m <= n: if sum([1 for i in range(m) if x[a][b+i] == x[a][b]]) == m: ch[x[a][b]] = True if a-m >= -1: if sum([1 for i in range(m) if x[a-i][b+i] == x[a][b]]) == m: ch[x[a][b]] = True if ch['3']: print('ERROR') elif ch['1']: if ch['2']: print('ERROR') else: print('1 WIN') elif ch['2']: print('2 WIN') elif ch['0']: print('NOT OVER') else: print('DRAW') |
# 6332038721 1288045 (2020-11-17 10:25) n = int(input()) m = int(input()) a = [[0 for i in range(n)] for j in range(n)] xwin = 0 owin = 0 error = 0 have0 = 0 for i in range(n) : s = input().split() for j in range(n) : a[i][j] = int(s[j]) if a[i][j] != 0 and a[i][j] != 1 and a[i][j] != 2: error = 1 if a[i][j] == 0 : have0 = 1 for i in range(n) : # check by row (-) if i+m > n : break for j in range(n) : c1 = 0 ; c2 = 0 for k in range(m) : if i+k >= n : break if a[i+k][j] == 1 : c1+=1 elif a[i+k][j] == 2 : c2+=1 if c1 == m : xwin = 1 elif c2 == m : owin = 1 for i in range(n) : # check by col (|) if i+m > n : break for j in range(n) : c1 = 0 ; c2 = 0 for k in range(m) : if j+k >= n : break if a[i][j+k] == 1 : c1+=1 elif a[i][j+k] == 2 : c2+=1 if c1 == m : xwin = 1 elif c2 == m : owin = 1 for i in range(n) : # check by col (|) if i+m > n : break for j in range(n) : c1 = 0 ; c2 = 0 for k in range(m) : if j+k >= n or i+k >= n : break if a[i+k][j+k] == 1 : c1+=1 elif a[i+k][j+k] == 2 : c2+=1 if c1 == m : xwin = 1 elif c2 == m : owin = 1 for i in range(n) : # check by col (|) for j in range(n) : c1 = 0 ; c2 = 0 for k in range(m) : if j+k >= n or i-k < 0 : break if a[i-k][j+k] == 1 : c1+=1 elif a[i-k][j+k] == 2 : c2+=1 if c1 == m : xwin = 1 elif c2 == m : owin = 1 if (xwin == 1 and owin == 1) or error == 1 : print("ERROR") elif xwin == 1 : print("1 WIN") elif owin == 1 : print("2 WIN") elif have0 == 1 : print("NOT OVER") elif have0 == 0 : print("DRAW") |
# 6332039321 1288190 (2020-11-17 10:52) n=int(input()) m=int(input()) fz=False tab=[] ow=False tw=False err=False for i in range(n): x=input().split() tab.append(x) for i in range(n): for j in range(n): kp=tab[i][j] if(tab[i][j]=='0'): fz=True continue if(tab[i][j]!='1' and tab[i][j]!='2'): err=True continue for k in range(m): if(i+k>=n): break if(k==m-1 and tab[i+k][j]==kp): if(kp=='1'): ow=True elif(kp=='2'): tw=True elif(tab[i+k][j]!=kp): break for k in range(m): if(i+k>=n or j-k<0): break if(k==m-1 and tab[i+k][j-k]==kp): if(kp=='1'): ow=True elif(kp=='2'): tw=True elif(tab[i+k][j-k]!=kp): break for k in range(m): if(i+k>=n or j+k>=n): break if(k==m-1 and tab[i+k][j+k]==kp): if(kp=='1'): ow=True elif(kp=='2'): tw=True elif(tab[i+k][j+k]!=kp): break for k in range(m): if(j+k>=n): break if(k==m-1 and tab[i][j+k]==kp): if(kp=='1'): ow=True elif(kp=='2'): tw=True elif(tab[i][j+k]!=kp): break if(err==True): print('ERROR') elif(ow==False and tw==False and fz==True): print('NOT OVER') elif(ow==False and tw==False and fz==False): print('DRAW') elif(ow==True and tw==True): print('ERROR') elif(tw==True): print('2 WIN') elif(ow==True): print('1 WIN') |
# 6332041521 1296705 (2020-12-10 00:05) n=int(input()) m=int(input()) LL=[] L=[] H=[] LH=[] RH=[] one=False two=False err=False chk=True for j in range(n): LL.append(0) L.append(LL.copy()) H.append(LL.copy()) LH.append(LL.copy()) RH.append(LL.copy()) L.append(LL.copy()) H.append(LL.copy()) LH.append(LL.copy()) RH.append(LL.copy()) for i in range(n): s=input().split() for j in range(n) : if s[j]=="0" : chk=False H[i%2][j]=0 L[i%2][j]=0 LH[i%2][j]=0 RH[i%2][j]=0 continue if s[j]!="0" and s[j]!="1" and s[j]!="2" : err=True break if j==0 : if s[j]=="1" : L[i%2][j]=1 else : L[i%2][j]=-1 else : if s[j]=="1" : if L[i%2][j-1]>=0 : L[i%2][j]=L[i%2][j-1]+1 else : L[i%2][j]=1 else : if L[i%2][j-1]<=0 : L[i%2][j]=L[i%2][j-1]-1 else : L[i%2][j]=-1 if i==0 : if s[j]=="1" : H[i%2][j]=1 else : H[i%2][j]=-1 else : if s[j]=="1" : if H[(i+1)%2][j]>=0 : H[i%2][j]=H[(i+1)%2][j]+1 else : H[i%2][j]=1 else : if H[(i+1)%2][j]<=0 : H[i%2][j]=H[(i+1)%2][j]-1 else : H[i%2][j]=-1 if i==0 or j==0: if s[j]=="1" : LH[i%2][j]=1 else : LH[i%2][j]=-1 else : if s[j]=="1" : if LH[(i+1)%2][j-1]>=0 : LH[i%2][j]=LH[(i+1)%2][j-1]+1 else : LH[i%2][j]=1 else : if LH[(i+1)%2][j-1]<=0 : LH[i%2][j]=LH[(i+1)%2][j-1]-1 else : LH[i%2][j]=-1 if i==0 or j==n-1: if s[j]=="1" : RH[i%2][j]=1 else : RH[i%2][j]=-1 else : if s[j]=="1" : if RH[(i+1)%2][j+1]>=0 : RH[i%2][j]=RH[(i+1)%2][j+1]+1 else : RH[i%2][j]=1 else : if RH[(i+1)%2][j+1]<=0 : RH[i%2][j]=RH[(i+1)%2][j+1]-1 else : RH[i%2][j]=-1 if H[i%2][j]>=m or L[i%2][j]>=m or LH[i%2][j]>=m or RH[i%2][j]>=m : one=True if H[i%2][j]<=-m or L[i%2][j]<=-m or LH[i%2][j]<=-m or RH[i%2][j]<=-m : two=True if err==True : print("ERROR") elif one==True and two==True: print("ERROR") elif one==True : print("1 WIN") elif two==True: print("2 WIN") elif chk==False: print("NOT OVER") elif chk==True: print("DRAW") |