3128 - Patrat Magic 1

From Bitnami MediaWiki
Revision as of 12:25, 6 January 2024 by Ramona Dragoș (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Enunt

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

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

Programul citește de la tastatură numărul n.

Date de ieșire

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

  • 1 ⩽ n ⩽ 100
  • n va fi de forma 4k, k număr natural
  • orice rezultat corect va fi punctat

Exemplu 1

Intrare
4
Ieșire
1 15 14 4
12 6 7 9
8 10 11 5
13 3 2 16


Exemplu 2

Intrare
3
Ieșire
Nu au fost respectate cerintele impuse


Rezolvare

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