3914 - Cuvinte12
Cerința[edit | edit source]
Se citește un cuvânt S
format din litere mici distincte ale alfabetului englez și un număr m
. Afișați în ordine lexicografică toate cuvintele formate din cel mult m
litere ordonate alfabetic din S
, în care nu există consoane alăturate și încep cu vocală.
Date de intrare[edit | edit source]
Programul citește de la tastatură cuvântul S
și numărul m
.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran cuvintele cerute, câte unul pe un rând.
Restricții și precizări[edit | edit source]
1 < m ≤
lungimea luiS ≤ 10
Exemplu:[edit | edit source]
Intrare
barni 3
Ieșire
a ab abi ai ain air an ar i in ir
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3"> def generate_words(word, m, current_word, index, vowels_count):
if len(current_word) > m or (len(current_word) > 0 and current_word[-1] in 'aeiou'): return
if len(current_word) > 0: print(current_word)
if index == len(word): return
for i in range(index, len(word)): if word[i] in 'aeiou': generate_words(word, m, current_word + word[i], i + 1, 1) else: generate_words(word, m, current_word + word[i], i + 1, 0)
word, m = input().split()
m = int(m)
word = .join(sorted(word, key=lambda x: 'aeiou'.index(x) if x in 'aeiou' else 99))
generate_words(word, m, , 0, 0)
</syntaxhighlight>