Задания
Версия для печати и копирования в MS Word
Тип 8 № 29117
i

По­ли­на со­став­ля­ет 4-⁠бук­вен­ные коды из букв П, О, Л, И, Н, А. Каж­дую букву можно ис­поль­зо­вать любое ко­ли­че­ство раз или со­всем не ис­поль­зо­вать, при этом нель­зя ста­вить под­ряд две глас­ные или две со­глас­ные. Сколь­ко раз­лич­ных кодов может со­ста­вить По­ли­на?

Спрятать решение

Ре­ше­ние.

За­ме­тим, что по­сколь­ку глас­ных и со­глас­ных по­ров­ну, слово может на­чи­нать­ся с как с со­глас­ной, так и с глас­ной. Также учтём то, что каж­дую букву можно ис­поль­зо­вать любое ко­ли­че­ство раз.

По­ста­вим на пер­вое место любую из трёх со­глас­ных. На вто­рое  — любую из трех глас­ных. На тре­тье  — любую из трёх со­глас­ных. На чет­вер­тое  — любую из трех глас­ных. По пра­ви­лу про­из­ве­де­ния, со­от­вет­ству­ю­щие ко­ли­че­ства спо­со­бов пе­ре­мно­жа­ем. Учи­ты­вая, что на пер­вое место можно по­ста­вить как со­глас­ную, так и глас­ную, По­ли­на может со­ста­вить 2 · 3 · 3 · 3 · 3  =  162 раз­лич­ных кода.

 

Ответ: 162.

 

При­ведём дру­гое ре­ше­ние на языке Python.

import itertools

alphabet = "ПО­ЛИ­НА"

vol = "ОИА"

con = "ПЛН"

ar = itertools.product(alphabet, repeat=4) #Раз­ме­ще­ние с по­вто­ре­ни­ем

arl = []

for i in ar:

arl.append(list(i))

count = 0

for e in arl:

flag = True

for i in range(len(e) - 1):

if (e[i] in vol and e[i + 1] in vol) or (e[i] in con and e[i + 1] in con):

flag = False

if flag:

count += 1

print(count)

 

При­ведём ре­ше­ние Ми­ха­и­ла Глин­ско­го на языке Python.

alphabet = 'ПО­ЛЯ­НА'

count = 0

ag = 'ОЯА'

ac = 'ПЛН'

for b1 in alphabet:

for b2 in alphabet:

for b3 in alphabet:

for b4 in alphabet:

s=b1+b2+b3+b4

if b1 in ag and b2 in ac and b3 in ag and b4 in ac:

count += 1

if b1 in ac and b2 in ag and b3 in ac and b4 in ag:

count += 1

print(count)

 

При­ведём ре­ше­ние Даны Ар­тю­хи­ной на языке Python.

from itertools import *

k = 0

for i in product('POLINA', repeat=4):

p = ''.join(i)

p = p.replace('I', 'x')

p = p.replace('O', 'x')

p = p.replace('A', 'x')

p = p.replace('N', 'y')

p = p.replace('P', 'y')

p = p.replace('L', 'y')

if 'xx' not in p and 'yy' not in p:

k+=1

print(k)


Аналоги к заданию № 28685: 29117 29656 33087 Все

Раздел кодификатора ФИПИ: 1.6.1 Фор­ма­ли­за­ция по­ня­тия ал­го­рит­ма