2574 - Val 1: Difference between revisions

From Bitnami MediaWiki
Paul Ungur (talk | contribs)
Paul Ungur (talk | contribs)
No edit summary
Line 53: Line 53:
     Functie care verifica daca valorile citite pentru n si m respecta restrictiile problemei.
     Functie care verifica daca valorile citite pentru n si m respecta restrictiile problemei.
     """
     """
     if not (1 <= n <= m <= 20):
     if not (1 <= n <= 20 and 1 <= m <= 20):
         print("Date de intrare incorecte!")
         print("Date de intrare incorecte!")
         exit()
         exit()
Line 63: Line 63:
     """
     """
     # initializam matricea cu caractere "_"
     # initializam matricea cu caractere "_"
     matrice = [["_"] * (2 * n * m + m) for _ in range(n)]
     for j in range(1, n + 1):
        for i in range(1, 8 * m + 1):
            if j == 1:
                if i % 8 == 3 or i % 8 == 5:
                    print('0', end='')
                else:
                    print('_', end='')
            elif j == n:
                if i % 8 == 1 or i % 8 == 7:
                    print('0', end='')
                else:
                    print('_', end='')
            else:
                if i % 8 == 2 or i % 8 == 6:
                    print('0', end='')
                else:
                    print('_', end='')
        print()


    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:
if __name__ == "__main__":
        print("".join(row))
 
 
def main():
     # citim valorile n si m
     # citim valorile n si m
     n, m = map(int, input().split())
     n, m = map(int, input().split())
     # validam datele de intrare
     # validam datele de intrare
     validare(n, m)
     if validare(n, m):
 
        print("Date de intrare valide")
    # rezolvam problema si afisam rezultatul
        # rezolvam problema si afisam rezultatul
    rezolvare(n, m)
        rezolvare(n, m)
 
 
# apelam functia main pentru a rezolva problema
main()


</syntaxhighlight>
</syntaxhighlight>

Revision as of 15:59, 26 April 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 <= 20 and 1 <= 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 "_"
   for j in range(1, n + 1):
       for i in range(1, 8 * m + 1):
           if j == 1:
               if i % 8 == 3 or i % 8 == 5:
                   print('0', end=)
               else:
                   print('_', end=)
           elif j == n:
               if i % 8 == 1 or i % 8 == 7:
                   print('0', end=)
               else:
                   print('_', end=)
           else:
               if i % 8 == 2 or i % 8 == 6:
                   print('0', end=)
               else:
                   print('_', end=)
       print()


if __name__ == "__main__":

   # citim valorile n si m
   n, m = map(int, input().split())
   # validam datele de intrare
   if validare(n, m):
       print("Date de intrare valide")
       # rezolvam problema si afisam rezultatul
       rezolvare(n, m)

</syntaxhighlight>