Все 4-буквенные слова, в составе которых могут быть буквы Б, А, К, Р, записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.
1. ББББ
2. БББА
3. БББК
4. БББР
5. ББАБ
Сколько слов между словами “КРАБ” и “БРАК”?
Решение руками:
Исходя из порядка букв в списке, присвоим им следующие коды: Б — 0, А — 1, К — 2, Р — 3. Тогда первое слово — 0000, второе — 0001 и т.д. Слово “КРАБ” будет кодироваться как 2310, а слово “БРАК” будет кодироваться как 0312. Т.к. для кодирования слов потребовалось всего 4 разные буквы, то коды будут представлены в четверичной системе счисления. Вычтем код слова “БРАК” из кода слова “КРАБ” и получим следующее:
Разница номеров слов составляет а значит между ними ровно 125 слов (т.к. при вычитании номеров мы учитываем на одно слово больше).
Решение Python:
from itertools import *
t = product(’БАКР’, repeat = 4)
c, res1, res2 = 0, 0, 0
for i in t:
s = ’’.join(i)
c += 1
if s == ’КРАБ’:
res1 = c
if s == ’БРАК’:
res2 = c
print(abs(res2-res1)-1)
Решение Python:
alf = ’БАКР’
c = 0
res1, res2 = 0, 0
for i in alf:
for j in alf:
for k in alf:
for l in alf:
s = i + j + k + l
c += 1
if s == ’КРАБ’:
res1 = c
if s == ’БРАК’:
res2 = c
print(abs(res2-res1)-1)