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