Top.Mail.Ru
Ответы

Python. Решение задач используя метод строк

Алфавит языка некоторого племени содержит всего несколько букв. Найдите все слова длины K, которые можно построить с помощью этого алфавита и в которых вторая буква – это первая буква алфавита.
Входные данные
Первая входная строка содержит алфавит языка. Во второй строке записывается число K (K ≥ 2).
Выходные данные
Программа должна вывести все допустимые слова, которые можно составить с помощью заданного алфавита. Слова должны быть выведены по одному в строчке в алфавитном порядке. После всех слов в отдельной строке выводится их количество.

По дате
По Рейтингу
Аватар пользователя
Ученик

Такие задачи удобно решать через рекурсию.

12345678910111213141516171819202122232425262728293031323334
 def generate_words(alphabet: str, k: int) -> list: 
    """ 
    Generate all possible words of length `k` from the `alphabet`. 
    """ 
    if k == 1: 
        return [char for char in alphabet] 
 
    word_list = [] 
    prefix_list = generate_words(alphabet, k - 1) 
    for prefix in prefix_list: 
        word_list += [prefix + letter for letter in alphabet] 
         
    return word_list 
 
 
def claen(word_list: list, alphabet: str) -> None: 
    """ 
    Drop words in which the second letter is not equal to the first 
    letter of the alphabet. 
    """ 
    i = 0 
    while i < len(word_list): 
        if word_list[i][1] != alphabet[0]: 
            word_list.pop(i) 
        else: 
            i += 1 
 
 
alphabet = input("Alphabet: ") 
k = int(input("k: "))
 
word_list = generate_words(alphabet, k) 
claen(word_list, alphabet[0]) 
print(*word_list, len(word_list), sep="\n") 
Аватар пользователя
Мастер

есть примеры на которых проверять программу?