0608 - NkX: Diferență între versiuni
De la Universitas MediaWiki
Linia 19: | Linia 19: | ||
: 10 1 | : 10 1 | ||
; Ieșire | ; Ieșire | ||
: Datele de intrare corespund restrictiilor impuse | |||
: 1 1 2 2 2 2 2 2 1 1 | : 1 1 2 2 2 2 2 2 1 1 | ||
: 1 1 1 2 2 2 2 1 1 1 | : 1 1 1 2 2 2 2 1 1 1 | ||
Linia 29: | Linia 30: | ||
: 1 1 1 2 2 2 2 1 1 1 | : 1 1 1 2 2 2 2 1 1 1 | ||
: 1 1 2 2 2 2 2 2 1 1 | : 1 1 2 2 2 2 2 2 1 1 | ||
<br> | |||
== Exemplu 2== | |||
; Intrare | |||
: 121 210 | |||
; Ieșire | |||
: Datele de intrare nu corespund restrictiilor impuse | |||
<br> | |||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> |
Versiunea curentă din 12 noiembrie 2023 08:55
Cerinţa
Se dau două numere naturale n și k, cu proprietatea că 2*k < n. Să se afişeze pe ecran elementele unei matrice pătratice de dimensiune n, formată din valorile 1 şi 2, construită astfel:
- valorile de pe diagonala principală sunt 1;
- valorile de pe k pseudodiagonale paralele cu diagonala principală şi situate imediat deasupra acesteia sunt 1;
- valorile de pe k pseudodiagonale paralele cu diagonala principală şi situate imediat sub aceasta sunt 1;
- valorile de pe diagonala secundară sunt 1;
- valorile de pe k pseudodiagonale paralele cu diagonala secundară şi situate imediat deasupra acesteia sunt 1;
- valorile de pe k pseudodiagonale paralele cu diagonala secundară şi situate imediat sub aceasta sunt 1;
- restul valorilor din matrice sunt 2.
Date de intrare
Programul citește de la tastatură numerele n k.
Date de ieșire
Programul va afișa pe ecran matricea construită, câte o linie a matrice pe o linie a ecranului, elementele de pe o line fiind separate prin exact un spaţiu.
Restricţii şi precizări
- 1 ⩽ n ⩽ 100
Exemplu
- Intrare
- 10 1
- Ieșire
- Datele de intrare corespund restrictiilor impuse
- 1 1 2 2 2 2 2 2 1 1
- 1 1 1 2 2 2 2 1 1 1
- 2 1 1 1 2 2 1 1 1 2
- 2 2 1 1 1 1 1 1 2 2
- 2 2 2 1 1 1 1 2 2 2
- 2 2 2 1 1 1 1 2 2 2
- 2 2 1 1 1 1 1 1 2 2
- 2 1 1 1 2 2 1 1 1 2
- 1 1 1 2 2 2 2 1 1 1
- 1 1 2 2 2 2 2 2 1 1
Exemplu 2
- Intrare
- 121 210
- Ieșire
- Datele de intrare nu corespund restrictiilor impuse
Rezolvare
def validare(nr, bare1): # functia de validare a datelor de intrare
if not isinstance(nr, int) or nr < 1 or nr > 100:
raise ValueError("Datele de intrare nu corespund restrictiilor impuse")
if not isinstance(bare1, int) or bare1 < 0 or bare1 > 50:
raise ValueError("Datele de intrare nu corespund restrictiilor impuse")
print("Datele de intrare corespund restrictiilor impuse")
def main():
# Solicităm introducerea numerelor n și k
print("Introduceți numerele n și k, separate printr-un spațiu: ")
n, k = map(int, input().split())
try:
validare(n, k) # apelul functiei de validare
except ValueError as e:
print(e)
return
# Inițializăm matricea cu valori de 2
matrice = [[2] * n for _ in range(n)]
# Parcurgem fiecare element din matrice
for i in range(n):
for j in range(n):
# Dacă elementul se află pe una dintre diagonalele specificate, îl setăm la 1
if abs(i - j) <= k or abs(i + j - n + 1) <= k:
matrice[i][j] = 1
# Afișăm matricea, fiecare linie pe o linie nouă și elementele separate prin spațiu
for linie in matrice:
print(' '.join(map(str, linie)))
if __name__ == "__main__":
main()