1810 - Cifre Gen 5

From Bitnami MediaWiki

Cerința

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

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

Date de ieșire

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

  • 3 ≤ n ≤ 19

Exemplul 1:

Intrare

5

Ieșire

01010 
01210

Exemplul 2:

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>