3128 - Patrat Magic 1: Diferență între versiuni
De la Universitas MediaWiki
(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...) |
Fără descriere a modificării |
||
Linia 1: | Linia 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> | ||
Linia 29: | Linia 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> |
Versiunea curentă din 6 ianuarie 2024 12:25
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
#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.")