Форум » Кодирование и декодирование информации » задание 8- 4228 » Ответить

задание 8- 4228

Ygrek: Подскажите условие корректно? (№ 4228) (А. Куканова) Маша составляет четырёхбуквенные слова из букв A, B, C, D, E, причём сначала в слове должны быть расположены гласные в алфавитном порядке, затем согласные в обратном алфавитном порядке. Буквы могут повторяться. Слово может состоять только из гласных или только из согласных. Пример подходящего слова: AAEDC. Сколько различных слов может составить Маша? 4-х буквенные слова, а пример 5-ти буквенный и Слово может состоять только из гласных или только из согласных, а в примере и из гласных и согласных?

Ответов - 12

Поляков: В примере опечатка - должно быть AEDC. В остальном все верно. Слово может состоять только из гласных или только из согласных, а в примере и из гласных и согласных? Может, но не должно. Ответ верный.

Ygrek: Поляков пишет: Может, но не должно. Ответ верный. Ответ в задаче 70. У меня не получается, что я не вижу? Ответ 36 получается. [pre] k=0 for i1 in 'ae': for i2 in 'ae': for i3 in 'dcb': for i4 in 'dcb': s=i1+i2+i3+i4 k+=1 print(k) [/pre]

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


Ygrek: Винникова пишет: Вы не учитываете, что могут быть строки только из гласных или только из согласных букв. Из гласных только 16 Из согласных только 81 16+81=97 И ещё комментарий смущает - Может, но не должно.

Винникова: Ygrek пишет: И ещё комментарий смущает - Может, но не должно. Лучше так сказать: может, но не обязательно. Может состоять из одних гласных или одних согласных, а может содержать и те и другие.

Винникова: Ygrek Вообще, если заметить одну особенность для отсортированных по разным правилам последовательностей, то задача решается просто (подобно задаче 198 из файла 8).

Ygrek: Винникова пишет: Вообще, если заметить одну особенность для отсортированных по разным правилам последовательностей Благодарю понял. [pre] k=0 for i1 in 'aedcb': for i2 in 'aedcb': for i3 in 'aedcb': for i4 in 'aedcb': s=i1+i2+i3+i4 if s.count('ea')==0 and s.count('de')==0 and s.count('cd')==0 and s.count('bc')==0 and s.count('da')==0 and s.count('bd')==0 and s.count('ce')==0 and s.count('ca')==0 and s.count('be')==0 and s.count('ba')==0: k+=1 print(k) [/pre]

Винникова: Ygrek Вы молодец)) Теперь могу предложить свое решение: [pre2] from itertools import product a = list(product('ABCDE', repeat=4)) n = 0 for el in a: ell = list(el) if ell == sorted(ell): print(el) n += 1 print(n) [/pre2] А работает он как раз из-за подмеченной особенности отсортированных последовательностей. Если посмотрите на промежуточные результаты, то поймете.

Поляков: Винникова пишет: Теперь могу предложить свое решение: Очень остроумно, спасибо. Не нужно строить отдельно часть гласных и часть согласных.

Винникова: Поляков пишет: Очень остроумно, спасибо. Спасибо за оценку, Константин Юрьевич)) Поляков пишет: Не нужно строить отдельно часть гласных и часть согласных. А еще порядок сортировки (в подсчете количества) не важен.

Винникова: Еще один вариант решения: [pre2] from itertools import combinations_with_replacement a = list(combinations_with_replacement('ABCDE', 4)) print(len(a)) [/pre2]

GasDM21: В решении [pre2] from itertools import product words = set(("".join(sorted(w)) for w in product('ABCDE', repeat=4))) print(words) [/pre2] Выводятся слова, которые явно не удовлетворяют условию задачи: {'ACDD', 'AADD', 'BCCD', 'DEEE', 'DDDE', 'AAAA', 'CCCC', 'BCCE', 'BBBB', 'CEEE', 'DDEE', 'BBBD' ... Что за интересная особенность сортировки позволяет считать это решение верным?



полная версия страницы