Вывод ответа #1865291691

-

Мастерство программирования

питонщики, тренируем свой мозг!

{autor_name}


{text_rank}
репутация: {repa}
{registration_date}
сообщений: {posts}
{tel_link}
#{postnumber_id}

1# coding: utf8
2 
3word = "211221-21221"
4word1, word2 = word.split('-')
5# чтобы не усложнять код, вместо кириллицы
6# использованы латинские аналоги букв
7mnemonics = {'1': 'A', '2': 'B', '11': 'J', '12': 'K', '21': 'U', '22': 'F'}
8 
9def words(word, slice_size, slices_array=[]):
10    all_words = []
11    slice, word = mnemonics[word[:slice_size]], word[slice_size:]
12    if word:
13        for array in words(word, 1, slices_array + [slice]):
14            all_words.append(array)
15        if len(word) > 1:
16            for array in words(word, 2, slices_array + [slice]) :
17                all_words.append(array)
18    else:
19        all_words.append(slices_array + [slice])
20    return map(''.join, all_words)
21 
22print words(word1, 1) + words(word1, 2)
23print words(word2, 1) + words(word2, 2)

-------------
добавлено в 12.39: Хотелось бы сказать спасибо эссе Гвидо о графах. Напрямую не пригодилось (хотя я и пытался его код использовать), но какие-то идеи я уловил.
-------------
добавлено в 12.51: И я сейчас подумал, all_words и slices_array надо на кортежи заменить, тогда еще и эффективно будет в плане памяти. Изначально использование списков было необходимо.


ответ опубликован:
Рейтинг: 5
голосов: 2



Яндекс.Метрика