2574 - Val 1: Diferență între versiuni

De la Universitas MediaWiki
Linia 49: Linia 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()


for i in range(n):
    for j in range(m):
        if i == 0 or i == n - 1:
            if j % 2 == 0:
                print("_", end="")
            else:
                print("0", end="")
        elif i % 2 != 0:
            if j == 0 or j == m - 1:
                print("0", end="")
            elif j % 2 != 0:
                print("_", end="")
            else:
                print("0", end="")
        else:
            print("_", end="")
    print()
</syntaxhighlight>
</syntaxhighlight>

Versiunea de la data 24 martie 2023 16:02

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

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