diff --git a/test_nxn.py b/test_nxn.py index f25db5b440bb03e3b25fdb82ff67171cb8fe47b0..1bb39094584fb1df8630ab18f1cb6ecec27a6b32 100644 --- a/test_nxn.py +++ b/test_nxn.py @@ -25,13 +25,21 @@ def mktable(str): table = [[0] * num for i in range(num)] # n차 테이블 return table -def isEvenMagic(str): - with open("4x4.txt", 'r') as f: - lines = f.readlines() # readlines가 EOF까지만 읽으므로, EOF를 체크할 필요가 없다. - try: # 스페이스로 구분해서 입력한경우 - arr1 = [int(a) for a in str.split()] #EOF에 대한 처리가 포함되어있음. - except ValueError: # , 컴마로 구분해서 입력한경우 - arr1 = [int(a) for a in str.split(',')] +def isEvenMagic(ar): + avg=ar[0]+ar[1]+ar[2]+ar[3] #기준값 구해놓기 + if(ar[0]+ar[4]+ar[8]+ar[12] != avg) : return False #1째 가로-새로줄 검사 + if(ar[4]+ar[5]+ar[6]+ar[7] !=avg or ar[1]+ar[5]+ar[9]+ar[13] !=avg) : return False#2째 가로-새로줄검사 + if(ar[8]+ar[9]+ar[10]+ar[11] !=avg or ar[2]+ar[6]+ar[10]+ar[14] !=avg) : return False#3째 가로-새로줄 검사 + if (ar[12] + ar[13] + ar[14] + ar[15] != avg or ar[3]+ar[7]+ar[11]+ar[15] !=avg): return False#마지막 가로-새로줄 검사 + + if (ar[0] + ar[1] + ar[4] + ar[5] != avg): return False #1사분면 검사 + if (ar[2] + ar[3] + ar[6] + ar[7] != avg): return False #2사분면 검사 + if (ar[8] + ar[9] + ar[12] + ar[13] != avg): return False #3사분면 검사 + if (ar[10] + ar[11] + ar[14] + ar[15] != avg): return False #4사분면 검사 + + if (ar[3] + ar[6] + ar[9] + ar[12] != avg):return False#대각선검사 + if (ar[0] + ar[5] + ar[10] + ar[15] != avg): return False #대각선검사 + else : return True def isOddMagic(table): @@ -77,8 +85,10 @@ else : with open("4x4.txt",'r') as f: lines = f.readlines() myset=set(lines) - print("결과 파일 내 {}개의 중복이 존재합니다".format(len(lines) - len(myset))) + if (len(lines) - len(myset) == 0):print("결과 파일 내 중복이 존재하지 않습니다.") + else :print("결과 파일 내 {}개의 중복이 존재합니다".format(len(lines) - len(myset))) for i in lines: - endd=isEvenMagic() + arr = [int(a) for a in i.split()] #4x4.txt 파일의 한줄은 각각 type : str 이므로, 이를 list에 int 로 split 해서 처리함. + endd=isEvenMagic(arr) print(i[0:len(lines[0]) - 1], '-', endd)