Тип 24 № 47021 
Обработка символьных строк. Задания для подготовки
i
Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите количество групп из идущих подряд не менее 10 символов, которые начинаются и заканчиваются буквой A и не содержат других букв A (кроме первой и последней) и букв B.
Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Задание 24
Решение. Для решения задачи считаем строку из данного файла. С помощью метода string.ToWords разобьём строку с разделителем A. После этого будем последовательно проверять длину каждой получившейся строки. Если длина получившейся строки больше или равна 8 (поскольку не учитываем первую и последнюю буквы A) и строка не содержит буквы B, будем увеличивать счётчик groups на единицу.
Приведём решение данной задачи на языке PascalABC.NET.
var
groups, i: integer;
s: string;
arr: array of string;
f: text;
begin
assign(f,'C:\24.txt');
reset(f);
groups := 0;
read(f, s);
arr := s.ToWords('A');
for i := 1 to arr.Length - 2 do
if (arr[i].Length >= 8) and (not arr[i].Contains('B')) then groups := groups + 1;
writeln(groups);
end.
В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ — 11138.
Ответ: 11138.
Примечание. Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём решение на языке Python.
with open('24.txt') as f:
s = f.readline()
s = s.split('A')
ans = list(filter(lambda x: (not 'B' in x) and len(x) >= 8, s[1:-1]))
print(len(ans))
Приведём другое решение на языке Python.
with open('24.txt') as f:
s = f.readline()
s = s.split('A')
ans = sum(not 'B' in x and len(x) >= 8 for x in s)
print(ans)
Приведём решение Юрия Красильникова на языке Python.
a = open('24.txt').readline().split('A')[1:-1]
print(len([x for x in a if len(x)>=8 and not 'B' in x]))
Приведём решение Михаила Митрофанова (Владимир) на языке Python.
f = open('24.txt').readline().replace('A','A*A').split('*')[1: -1]
count = 0
for x in f:
if len(x) >= 10 and x.count('B') == 0:
count += 1
print(count)
Приведём решение Бориса Савельева на языке Python.
f = open('24.txt')
ans = 0
f = f.readline().split('A')
for i in range (1,len(f)):
if len(f[i])>=8 and f[i].count('B')==0:
ans += 1
print(ans)
Ответ: 11138