1810 - Cifre Gen 5
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()
- 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>