На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение





Сообщение: 2
ссылка на сообщение  Отправлено: 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>

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 1 [только новые]







Сообщение: 419
ссылка на сообщение  Отправлено: 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)



Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 158
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет