3128 - Patrat Magic 1: Difference between revisions
Pagină nouă: == 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... |
No edit summary |
||
Line 1: | Line 1: | ||
== Enunt == | == 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. | 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 == | == 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. | 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 == | == Date de intrare == | ||
Programul citește de la tastatură numărul n. | Programul citește de la tastatură numărul '''n'''. | ||
== Date de ieșire == | == 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. | 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 == | == Restricții și precizări == | ||
*1 ⩽ n ⩽ 100 | *'''1 ⩽ n ⩽ 100''' | ||
*n va fi de forma 4k, k număr natural | *'''n''' va fi de forma '''4k''', '''k''' număr natural | ||
*orice rezultat corect va fi punctat | *orice rezultat corect va fi punctat | ||
== Exemplu 1 == | == Exemplu 1 == | ||
;Intrare | ;'''Intrare''' | ||
:4 | :4 | ||
;Ieșire | ;'''Ieșire''' | ||
: | :1 15 14 4 | ||
: | :12 6 7 9 | ||
: | :8 10 11 5 | ||
: | :13 3 2 16 | ||
<br> | <br> | ||
== Exemplu 2 == | == Exemplu 2 == | ||
;Intrare | ;'''Intrare''' | ||
:3 | :3 | ||
;Ieșire | ;'''Ieșire''' | ||
:Nu au fost respectate cerintele impuse | :Nu au fost respectate cerintele impuse | ||
<br> | <br> | ||
Line 29: | Line 29: | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
#3128 - PatratMagic1 | #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): | 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)] | magic_square = [[0] * n for _ in range(n)] | ||
i, j = 0, n // 2 | 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: | 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> | </syntaxhighlight> |
Latest revision as of 12:25, 6 January 2024
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>