3128 - Patrat Magic 1
Enunt[edit | edit source]
Un Pătrat Magic este un pătrat ce conține toate numerele de la 1 la n^2 în care sumele fiecăror linii, coloane și a celor două diagonale sunt egale. Această sumă se mai numește și constanta pătratului magic.
Cerința[edit | edit source]
Se dă un număr natural n, de forma n=4k. Să se genereze și să se afișeze un pătrat magic de latură n.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n.
Date de ieșire[edit | edit source]
Programul afișează pe ecran pătratul magic construit, câte o linie a matricei pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spaţiu.
Restricții și precizări[edit | edit source]
- 1 ⩽ n ⩽ 100
- n va fi de forma 4k, k număr natural
- orice rezultat corect va fi punctat
Exemplu 1[edit | edit source]
- Intrare
- 4
- Ieșire
- 1 15 14 4
- 12 6 7 9
- 8 10 11 5
- 13 3 2 16
Exemplu 2[edit | edit source]
- Intrare
- 3
- Ieșire
- Nu au fost respectate cerintele impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 3128 - PatratMagic1
def is_valid_input(n):
if not (1 <= n <= 100 and n % 4 == 0): return False return True
def generate_magic_square(n):
if not is_valid_input(n): return "Nu au fost respectate cerintele impuse"
magic_square = [[0] * n for _ in range(n)]
i, j = 0, n // 2 num = 1
while num <= n**2: magic_square[i][j] = num num += 1 i -= 1 j += 1
if i < 0 and j >= n: i += 2 j -= 1 elif i < 0: i = n - 1 elif j >= n: j = 0 elif magic_square[i][j] != 0: i += 2 j -= 1
result = "" for row in magic_square: result += " ".join(map(str, row)) + "\n"
return result
- Citirea datelor de intrare
try:
n = int(input("Introduceti n: ")) result = generate_magic_square(n) print(result)
except ValueError:
print("Input invalid. Introduceti un numar natural.")
</syntaxhighlight>