3128 - Patrat Magic 1

From Bitnami MediaWiki

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>

  1. 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
  1. 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>