2019년 11월 17일 일요일

[Python 3] HackerRank Forming a Magic Square

Test url: https://www.hackerrank.com/challenges/magic-square-forming/problem



My Answer:


#!/bin/python3

import math
import os
import random
import re
import sys

def reverseTopBottom(mtx):
result = [[0]*3 for i in range(3)]

for i in range(3):
for j in range(3):
result[i][j] = mtx[2-i][j]
return result

def reverseLeftRight(mtx):
result = [[0]*3 for i in range(3)]

for i in range(3):
for j in range(3):
result[i][2-j] = mtx[i][j]

return result

def rotate90(mtx):
result = [[0]*3 for i in range(3)]

result[0][0] = mtx[2][0]
result[0][1] = mtx[1][0]
result[0][2] = mtx[0][0]
result[1][0] = mtx[2][1]
result[1][1] = mtx[1][1]
result[1][2] = mtx[0][1]
result[2][0] = mtx[2][2]
result[2][1] = mtx[1][2]
result[2][2] = mtx[0][2]

return result

def calculate(s, mtx):
result = 0
for i in range(3):
for j in range(3):
result += abs(mtx[i][j] - s[i][j])
return result

# Complete the formingMagicSquare function below.
def formingMagicSquare(s):
result = 0
minResult = 100
mtx = [[4,9,2],[3,5,7],[8,1,6]]
result = calculate(s, mtx)
if(minResult > result):
minResult = result

mtx = rotate90(mtx)
result = calculate(s, mtx)
if(minResult > result):
minResult = result

mtx = rotate90(mtx)
result = calculate(s, mtx)
if(minResult > result):
minResult = result

mtx = rotate90(mtx)
result = calculate(s, mtx)
if(minResult > result):
minResult = result

mtx = reverseLeftRight(mtx)
result = calculate(s, mtx)
if(minResult > result):
minResult = result

mtx = rotate90(mtx)
result = calculate(s, mtx)
if(minResult > result):
minResult = result

mtx = rotate90(mtx)
result = calculate(s, mtx)
if(minResult > result):
minResult = result

mtx = rotate90(mtx)
result = calculate(s, mtx)
if(minResult > result):
minResult = result

return minResult


if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')

s = []

for _ in range(3):
s.append(list(map(int, input().rstrip().split())))

result = formingMagicSquare(s)

fptr.write(str(result) + '\n')

fptr.close()

댓글 없음:

댓글 쓰기