@asyasb

Почему не работает программа?

1) Вася составляет 5-буквенные слова, в которых есть только буквы С, И, Р, О, П, причём в каждом слове обязательно есть ровно одна буква О, при этом стоять она может только после согласной. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько существует таких слов, которые может написать Вася?
k=0
from itertools import product
for i in product ('СИРОП', repeat=5):
    if (i.count('О')==1) and  (i.count('ИО')==0):
        k+=1
print(k)

выводит 1280, а надо 768
  • Вопрос задан
  • 2895 просмотров
Решения вопроса 1
daniilgorbenko
@daniilgorbenko
Программист, AI & BigData
1) В данном случае переменная i хранит кортеж из букв, поэтому в этом кортеже никогда не будет сочетания "ИО"
Для исправления этого вам надо добавить строку:
i = ''.join(i)
2) "О" должна идти после согласной, а значит, она не может стоять первой, а также не может идти после другой "О". В итоге у вас должно получить что-то вроде:
k=0
from itertools import product
for i in product('СИРОП', repeat=5):
    i = ''.join(i)
    if (i.count('О')==1) and  (i.count('ИО')==0) and (i.count('ОО') == 0)\
    and not i.startswith('О'):
        k+=1
print(k)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы