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

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

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

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





Сообщение: 339
ссылка на сообщение  Отправлено: 24.02.23 21:08. Заголовок: к задаче 8 - 302 М. Байрамгулова опубликовано ложное решение и ответ


Здравствуйте, Константин Юрьевич!

Посмотрите пожалуйста, к задаче ege 8 №302, (М. Байрамгулов) Миша составляет 5-буквенные слова из букв слова КОМПЬЮТЕР так, что в них можно переставить буквы и получить палиндром. Сколько различных слов может составить Миша?

Опубликовано следующее решение:
 
from itertools import product
count = 0
for n in set(product( 'КОМПЬЮТЕР', repeat=5 )):
setN = set(n)
freq = [ n.count(c) for c in setN ]
if sum( 1 for f in freq if f % 2 == 1) == 1:
count += 1

print( count )

Дающее ответ 8649, и в ответах указан он же!
Не может ли быть здесь ошибки?

Ниже публикую 3 способа решения данной задачи и все они дают ответ 729

Вариант №1

from itertools import product
k = set()
for x in product('КОМПЬЮТЕР', repeat=6):
s = ''.join(x)
if s == s[::-1]: # если слово читается слева и справа одинаково
k.add(s) # запоминаем его с учетом отсутствия совпадений

print('Вариант решения №1', len(k))

Вариант №2

print('Вариант решения №2 k =',9*9*9)

Вариант №3

from itertools import product

k=set()
for n in set(product( 'КОМПЬЮТЕР', repeat=5 )):
if n[0]==n[4] and n[1]==n[3]:
k.add(n)

print('Вариант решения №3',len(k) )

С уважением

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


Администратор




Сообщение: 3913
ссылка на сообщение  Отправлено: 24.02.23 21:19. Заголовок: Александр Иванович, ..


Александр Иванович, Вы учитываете только палиндромы, а в условии говорится про все слова, из которых МОЖНО ПОЛУЧИТЬ ПАЛИНДРОМ перестановкой букв. Это ведь не одно и то же. Например, aabb - не палиндром, но перестановкой можно получить палиндром.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 340
ссылка на сообщение  Отправлено: 24.02.23 21:35. Заголовок: Да уж, и правда, век..


Поляков пишет:

 цитата:
Например, aabb - не палиндром, но перестановкой можно получить палиндром.



Да уж, и правда, век живи - век учись!
Остается только надеяться, что сдающим ЕГЭ таких мудрёных заданий не попадется!

Спасибо!

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 343
ссылка на сообщение  Отправлено: 25.02.23 06:06. Заголовок: Для начинающих прогр..


Для начинающих программировать на питоне, в знак оправдания за свою невнимательность, с высоты своего 47 летнего педстажа, могу дать совет.

Увидев непонятный код - не отчаивайтесь, любую, даже самую страшную на первый взгляд программу, можно разложить по полочкам простым рассуждением. В конкретном примере это может выглядеть примерно так:

• количество всех палиндромов 9*9*9 = 729
• всего разных букв 9, это означает, что есть ровно 9 палиндромов состоящих из одной буквы, т.е. 9 пятибуквенных слов, например, ККККК, ООООО, МММММ…
• количество трехбуквенных палиндромов равно 729 – 9 = 720
• из трех символов ПАЛИНРОМА можно составить – КОМ, КМО, КММ, КОО => 4*3 = 12 слов
• Итого слов будет: 720 * 12 + 9 = 8649
• Или в однострочном коде это будет выглядеть как-то так:
print((9 * 9 * 9 – 9) * 12 + 9)

А кто пожелает, можно посмотреть другой код, доступный для понимания, на ветке "Комбинаторика задание 8", предложенный Гошей Ищенко

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

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