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

Ми­ха­ил со­став­ля­ет 6-⁠бук­вен­ные коды. В кодах раз­ре­ша­ет­ся ис­поль­зо­вать толь­ко буквы А, Б, В, Г, при этом код не может на­чи­нать­ся с глас­ной и не может со­дер­жать двух оди­на­ко­вых букв под­ряд. Сколь­ко раз­лич­ных кодов может со­ста­вить Ми­ха­ил?

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

Ре­ше­ние.

На пер­вое место слова можно по­ста­вить любую из 4 букв, кроме А. На каж­дое сле­ду­ю­щее место можно по­ста­вить любую из 4 букв, кроме той, ко­то­рая стоит на преды­ду­щем месте. Зна­чит, всего Ми­ха­ил может со­ста­вить 3 · 3 · 3 · 3 · 3  · 3  =  729 кодов.

 

Ответ: 729.

 

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

import itertools

alphabet = "АБВГ"

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

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[0] == 'А' or e[i] == e[i + 1]:

flag = False

if flag == True: count += 1

print(count)

 

При­ведём ре­ше­ние Ар­те­ма Нер­си­ся­на на языке Python.

from itertools import product

count = 0

for x in product('АБВГ', repeat=6):

w = ''.join(x)

if w[0] != 'А' and w.count('АА') == 0 and w.count('ББ') == 0 and w.count('ВВ') == 0 and w.count('ГГ') == 0:

count += 1

print(count)

 

При­ведём ре­ше­ние Сер­гея Донец на языке PascalABC.NET.

begin

'А, Б, В, Г'.Remove(', ').Cartesian(6)

.Where(s->s[1] <> 'А') // Пер­вой не может быть А

.Where(\(a,b,c,d,e,f)->((a<>b)and(b<>c)and(c<>d)and(d<>e)and(e<>f))

).Count.Print;

end.


Аналоги к заданию № 16439: 16385 Все

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