1277 - ProdusCartezian1

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Se dau două numere naturale nenule n și m. Considerăm mulțimea A={1,2,..,n}. Să se genereze în ordine lexicografică elementele produsului cartezian .

Date de intrare[edit | edit source]

Fișierul de intrare produscartezian1IN.txt conține pe prima linie numerele n și m, separate printr-un spațiu.

Date de ieşire[edit | edit source]

Fișierul de ieșire produscartezian1OUT.txt va conține elementele produsului cartezian, fiecare pe o linie. Valorile de pe fiecare linie vor fi separate prin câte un spațiu. În cazul în care restricțiile nu sunt îndeplinite, se va afișa mesajul "Datele nu corespund restrictiilor impuse".

Restricţii şi precizări[edit | edit source]

  • 1 ≤ n ≤ 7
  • 1 ≤ m ≤ 6

Exemplul 1:[edit | edit source]

produscartezian1IN.txt

2 3

produscartezian1OUT.txt

1 1 1 
1 1 2 
1 2 1 
1 2 2 
2 1 1 
2 1 2 
2 2 1 
2 2 2 

Exemplul 2:[edit | edit source]

produscartezian1IN.txt

2 8

produscartezian1OUT.txt

Datele nu corespund restrictiilor impuse

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1"> def afisare(x, m, out_file):

   with open(out_file, 'a') as f:
       for i in range(1, m + 1):
           f.write(f"{x[i]} ")
       f.write("\n")

def bectreching(k, n, m, x, out_file):

   for i in range(1, n + 1):
       x[k] = i
       if k < m:
           bectreching(k + 1, n, m, x, out_file)
       else:
           afisare(x, m, out_file)

def verifica_restrictii(n, m):

   if 1 <= n <= 7 and 1 <= m <= 6:
       return True
   else:
       return False

def main():

   with open("produscartezian1IN.txt", 'r') as infile:
       n, m = map(int, infile.readline().strip().split())
   if verifica_restrictii(n, m):
       x = [0] * (m + 1)
       out_file = "produscartezian1OUT.txt"
       with open(out_file, 'w'):  # Clear the output file
           pass
       bectreching(1, n, m, x, out_file)
   else:
       with open("produscartezian1OUT.txt", 'w') as outfile:
           outfile.write("Datele nu corespund restrictiilor impuse\n")

if __name__ == "__main__":

   main()

</syntaxhighlight>