2574 - Val 1: Difference between revisions
Paul Ungur (talk | contribs) |
Paul Ungur (talk | contribs) |
||
Line 49: | Line 49: | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line="1"> | <syntaxhighlight lang="python" line="1"> | ||
n, m = map(int, input().split()) | def validare(n, m): | ||
""" | |||
Functie care verifica daca valorile citite pentru n si m respecta restrictiile problemei. | |||
""" | |||
if not (1 <= n <= m <= 20): | |||
print("Date de intrare incorecte!") | |||
exit() | |||
def rezolvare(n, m): | |||
""" | |||
Functie care construieste si afiseaza figura ceruta in functie de valorile lui n si m. | |||
""" | |||
# initializam matricea cu caractere "_" | |||
matrice = [["_"] * (2 * n * m + m) for _ in range(n)] | |||
for i in range(n): | |||
for j in range(2 * n * m + m): | |||
if (i == 0 or i == n - 1) and (j % (2 * n + 1) != 2 * n): | |||
matrice[i][j] = "_" | |||
elif i > 0 and i < n - 1: | |||
if j % (2 * n + 1) == 0 or j % (2 * n + 1) == 2 * n: | |||
matrice[i][j] = "_" | |||
elif j // (2 * n + 1) % 2 == 0 and j % (2 * n + 1) == (2 * n - i): | |||
matrice[i][j] = "0" | |||
elif j // (2 * n + 1) % 2 == 1 and j % (2 * n + 1) == i: | |||
matrice[i][j] = "0" | |||
for row in matrice: | |||
print("".join(row)) | |||
def main(): | |||
# citim valorile n si m | |||
n, m = map(int, input().split()) | |||
# validam datele de intrare | |||
validare(n, m) | |||
# rezolvam problema si afisam rezultatul | |||
rezolvare(n, m) | |||
# apelam functia main pentru a rezolva problema | |||
main() | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 16:02, 24 March 2023
Cerința
Se citeste n și m. Să se reprezinte următoarea diagramă în funcție de n și m, în care n reprezintă înălțimea, iar m numărul de valuri care compun diagrama. Diagrama este formată din caractere 0, interiorul și exteriorul valurilor sunt alcătuite din caractere _.
Date de intrare
Programul citește numerele n m.
Date de ieșire
Programul va afișa o diagrama cerută.
Restricții și precizări
1 ≤ n ≤ m ≤ 20
Exemplul 1:
Intrare 5 4
Ieșire
__0_0_____0_0_____0_0_____0_0___
_0___0___0___0___0___0___0___0__
_0___0___0___0___0___0___0___0__
_0___0___0___0___0___0___0___0__
0_____0_0_____0_0_____0_0_____0_
Exemplul 2:
Intrare
6 8
Ieșire
__0_0_____0_0_____0_0_____0_0_____0_0_____0_0_____0_0_____0_0___
_0___0___0___0___0___0___0___0___0___0___0___0___0___0___0___0__
_0___0___0___0___0___0___0___0___0___0___0___0___0___0___0___0__
_0___0___0___0___0___0___0___0___0___0___0___0___0___0___0___0__
_0___0___0___0___0___0___0___0___0___0___0___0___0___0___0___0__
0_____0_0_____0_0_____0_0_____0_0_____0_0_____0_0_____0_0_____0_
Rezolvare
<syntaxhighlight lang="python" line="1"> def validare(n, m):
""" Functie care verifica daca valorile citite pentru n si m respecta restrictiile problemei. """ if not (1 <= n <= m <= 20): print("Date de intrare incorecte!") exit()
def rezolvare(n, m):
""" Functie care construieste si afiseaza figura ceruta in functie de valorile lui n si m. """ # initializam matricea cu caractere "_" matrice = [["_"] * (2 * n * m + m) for _ in range(n)]
for i in range(n): for j in range(2 * n * m + m): if (i == 0 or i == n - 1) and (j % (2 * n + 1) != 2 * n): matrice[i][j] = "_" elif i > 0 and i < n - 1: if j % (2 * n + 1) == 0 or j % (2 * n + 1) == 2 * n: matrice[i][j] = "_" elif j // (2 * n + 1) % 2 == 0 and j % (2 * n + 1) == (2 * n - i): matrice[i][j] = "0" elif j // (2 * n + 1) % 2 == 1 and j % (2 * n + 1) == i: matrice[i][j] = "0"
for row in matrice: print("".join(row))
def main():
# citim valorile n si m n, m = map(int, input().split())
# validam datele de intrare validare(n, m)
# rezolvam problema si afisam rezultatul rezolvare(n, m)
- apelam functia main pentru a rezolva problema
main()
</syntaxhighlight>