1810 - Cifre Gen 5

From Bitnami MediaWiki
Revision as of 14:06, 4 January 2024 by Rus Marius (talk | contribs) (Pagină nouă: = Cerința = Scrieți un program care citeşte o valoare naturală nenulă impară pentru <code>n</code> şi apoi generează şi afişează în ordine crescătoare lexicografic toate combinaţiile formate din <code>n</code> cifre care îndeplinesc următoarele proprietăţi: - încep şi se termină cu <code>0</code>; - modulul diferenţei între oricare două cifre alăturate dintr-o combinaţie este <code>1</code>. Astfel, pentru <code>n=5</code>, combinaţiile afişate...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința[edit | edit source]

Scrieți un program care citeşte o valoare naturală nenulă impară pentru n şi apoi generează şi afişează în ordine crescătoare lexicografic toate combinaţiile formate din n cifre care îndeplinesc următoarele proprietăţi:

- încep şi se termină cu 0;

- modulul diferenţei între oricare două cifre alăturate dintr-o combinaţie este 1.

Astfel, pentru n=5, combinaţiile afişate sunt, în ordine, următoarele: 01010, 01210.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n, impar.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran, pe rânduri separate, soluțiile generate.În cazul în care restricțiile nu sunt îndeplinite, se va afișa mesajul "Nu corespunde restricțiilor impuse".

Restricții și precizări[edit | edit source]

  • 3 ≤ n ≤ 19

Exemplul 1:[edit | edit source]

Intrare

5

Ieșire

01010 
01210

Exemplul 2:[edit | edit source]

Intrare

40

Ieșire

Datele introduse nu corespund restricțiilor impuse.

<syntaxhighlight lang="python3" line="1"> def check_restrictions(n):

   if 3 <= n <= 19 and n % 2 == 1:
       return True
   else:
       print("Datele introduse nu corespund restricțiilor impuse.")
       return False

def generate_combinations(n, current_combination):

   if len(current_combination) == n:
       if current_combination[0] == 0 and current_combination[-1] == 0:
           print("".join(map(str, current_combination)))
   else:
       for digit in range(0, 10):
           if not current_combination or abs(digit - current_combination[-1]) == 1:
               current_combination.append(digit)
               generate_combinations(n, current_combination)
               current_combination.pop()
  1. Funcția principală

def main():

   # Citirea valorii pentru n
   n = int(input("Introduceți un număr natural nenul impar n: "))
   
   # Verificarea restricțiilor
   if not check_restrictions(n):
       return
   
   # Inițializarea listei cu prima cifră (0)
   current_combination = []
   
   # Generarea și afișarea combinațiilor
   generate_combinations(n, current_combination)

if __name__ == "__main__":

   main()

</syntaxhighlight>