-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathForming a Magic Square.py
152 lines (75 loc) · 2.77 KB
/
Forming a Magic Square.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#!/bin/python3
import math
import os
import random
import re
import sys
# Complete the formingMagicSquare function below.
def formingMagicSquare(s):
data = [
[[8, 1, 6], [3, 5, 7], [4, 9, 2]],
[[6, 1, 8], [7, 5, 3], [2, 9, 4]],
[[4, 9, 2], [3, 5, 7], [8, 1, 6]],
[[2, 9, 4], [7, 5, 3], [6, 1, 8]],
[[8, 3, 4], [1, 5, 9], [6, 7, 2]],
[[4, 3, 8], [9, 5, 1], [2, 7, 6]],
[[6, 7, 2], [1, 5, 9], [8, 3, 4]],
[[2, 7, 6], [9, 5, 1], [4, 3, 8]],
]
t = []
for i in data:
res = 0
for j, k in zip(i,s):
for x,y in zip(j,k):
res += max([x,y]) - min([x,y])
t.append(res)
return min(t)
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()
# We define a magic square to be an matrix of distinct positive integers from to where the sum of any row, column, or diagonal of length is always equal to the same number: the magic constant.
# You will be given a matrix of integers in the inclusive range . We can convert any digit to any other digit in the range at cost of . Given , convert it into a magic square at minimal cost. Print this cost on a new line.
# Note: The resulting magic square must contain distinct integers in the inclusive range .
# For example, we start with the following matrix :
# 5 3 4
# 1 5 8
# 6 4 2
# We can convert it to the following magic square:
# 8 3 4
# 1 5 9
# 6 7 2
# This took three replacements at a cost of .
# Function Description
# Complete the formingMagicSquare function in the editor below. It should return an integer that represents the minimal total cost of converting the input square to a magic square.
# formingMagicSquare has the following parameter(s):
# s: a array of integers
# Input Format
# Each of the lines contains three space-separated integers of row .
# Constraints
# Output Format
# Print an integer denoting the minimum cost of turning matrix into a magic square.
# Sample Input 0
# 4 9 2
# 3 5 7
# 8 1 5
# Sample Output 0
# 1
# Explanation 0
# If we change the bottom right value, , from to at a cost of , becomes a magic square at the minimum possible cost.
# Sample Input 1
# 4 8 2
# 4 5 7
# 6 1 6
# Sample Output 1
# 4
# Explanation 1
# Using 0-based indexing, if we make
# -> at a cost of
# -> at a cost of
# -> at a cost of ,
# then the total cost will be .