Автор | Сообщение |
|
Отправлено: 08.04.21 10:02. Заголовок: 8(115)
помогите найти ошибку (считая руками получила 6), а программой 66 Петя составляет четырёхбуквенные слова перестановкой букв слова АБАК. При этом он избегает слов с двумя подряд одинаковыми буквами. Сколько всего различных слов может составить Петя? <code> k=0 from itertools import product for i in product('АБАК', repeat=4): i=''.join(i) if i.count('АА')==0 and i.count('ББ')==0 and i.count('КК')==0: k+=1 print(k) </code>
|
|
|
Ответов - 1
[только новые]
|
|
|
Отправлено: 08.04.21 16:19. Заголовок: Ответ
Здравствуйте, altarist! Вам нужно разобраться в том, чем отличаются итераторы product и permutations модуля itertools. Поскольку в условии задачи речь идет о перестановке букв слова, разумно использовать итератор "permutations": цитата: | from itertools import permutations p = set(permutations('АБАК')) s = map(lambda x: ''.join(x), p) k = 0 for x in s: if x.count('АА') == 0 and x.count('ББ') == 0 and x.count('КК') == 0: k += 1 print(k) |
|
Или коротко так: цитата: | from itertools import permutations s = map(lambda x: ''.join(x), set(permutations('АБАК'))) L = [x for x in s if x.count('АА') == 0 and x.count('ББ') == 0 and x.count('КК') == 0] print(len(L)) |
| Ваш вариант кода можно поправить так: цитата: | from itertools import product k=0 for i in set(product('АБАК', repeat=4)): i=''.join(i) if i.count('А') == 2 and i.count('Б') == 1 and i.count('К') == 1 \ and i.count('АА')==0 and i.count('ББ')==0 and i.count('КК')==0: k+=1 print(k) |
|
|
|
|