Задание 8
Комбинаторика слов
Типов: 3
Как распознать
В строке файла проверяются повторения чисел.
Условие
Найти строку: одно число встречается трижды, остальные различны, повторяющееся больше их среднего.
Разбор
Раздели элементы по числу повторений и проверь среднее.
Шаблон
f = open("1")
cnt = 0
num = 1
num_list =[]
for z in f:
a = [int(x) for x in z.split()]
a1 = [x for x in a if a.count(x)==3]
a2 = [x for x in a if a.count(x)==1]
if len(a1)== 3 and len(a2)== 3 and a1[0] > sum(a2)/3:
num_list.append(num)
num+=1
print(max(num_list))Как распознать
Считаются числа фиксированной длины без повторов.
Условие
Посчитать четырёхзначные числа с разными цифрами и чередованием чётности.
Разбор
Перестановки исключают повторы, отдельно проверь ведущий ноль и соседей.
Шаблон
from itertools import *
cnt = 0
for i in permutations("0123456789", r=4):
num = "".join(i)
if i[0] != '0' and all(int(num[j]) %2 !=int(num[j+1]) % 2 for j in range(3)):
cnt+=1
print(cnt)Как распознать
Нужно фиксированное число цифр 5 и запрет соседства.
Условие
Посчитать семизначные записи в основании 9 с одной цифрой 5 без чётной цифры рядом.
Разбор
Перебери произведение цифр, исключи ведущий ноль и запрещённые пары.
Шаблон
from itertools import *
cnt = 0
for i in product("012345678",repeat=7):
num = "".join(i)
if i[0]!="0" and i.count("5") == 1 and all("5" + x not in num and x + "5" not in num for x in "02468"):
cnt+=1
print(cnt)