Тема 24
Демо 2025 года
Разные задачи
3.53M
Categories: programmingprogramming informaticsinformatics

КЕГЭ. Обработка символьных строк

1. Тема 24

КЕГЭ
Обработка символьных строк
Слайд 2. Простые задачи
Слайд 5. Демо 2023
Слайд 16. Символ А встречается не более 3 раз
Слайд 22. АВ встречается ровно 21 раз
Слайд 26. Демо 2024
Слайд 32 . Демо 2025
Слайд 38. Разные задачи

2.

№2 Решу ЕГЭ. Текстовый файл состоит не более чем из 106 символов X, Y и Z.
Определите длину самой длинной последовательности, состоящей из
символов X. Хотя бы один символ X находится в последовательности.
Для выполнения этого задания следует написать программу. Ниже приведён
файл, который необходимо обработать с помощью данного алгоритма.
Подключаем текстовый файл, который
лежать в той же папке, где этот код
f = open('24_demo.txt') должен
Питона
s = f.readline()
k = km = 0
for i in range (len(s)):
if s[i] == 'X':
k+=1
else:
km = max (k, km)
k=0
print (km)
Считываем строку
Счетчик текущего и максимального
количества символов ‘X’
Пример.
01 23 456 78
s = 'XXYYZXXXX'
s[4] = Z
km = 4
s[6] = X

3.

Отладка программы №2
#f = open('24_demo.txt')
#s = f.readline()
s = 'XXXYYZXX'
k = km = 0
for i in range (len(s)):
if s[i] == 'X':
k+=1
else:
km = max (k, km)
k=0
print (km)
s = 'XXYYZXXXX'
s = 'XXYXXXYZX'

4.

№*. Текстовый файл состоит не более чем из 106 символов X, Y и Z.
Определите длину самой длинной последовательности, состоящей из
символов X и Y (в любом порядке). Для выполнения этого задания следует
написать программу. Ниже приведён файл, который необходимо обработать с
помощью данного алгоритма.
f = open('24_demo.txt')
s = f.readline()
k = km = 0
for i in range (len(s)):
if s[i] in 'XY':
k+=1
else:
km = max (k, km)
k=0
print (km)

5.

№37 Решу ЕГЭ
Демонстрационная версия ЕГЭ−2023 по информатике
Текстовый файл состоит из символов A, C, D, F и O.
Определите максимальное количество идущих подряд пар символов вида
согласная + гласная. Для выполнения этого задания следует написать программу.
f = open('24.txt')
s = f.readline()
s = s.replace('CA','*')
s = s.replace('DA','*')
s = s.replace('FA','*')
s = s.replace('CO','*')
s = s.replace('DO','*')
s = s.replace('FO','*')
k = kmax = 0
for i in s:
if i == '*':
k += 1
else:
kmax = max(k, kmax)
k=0
print(kmax)
Ответ: 95.

6.

Фрагмент исходного файла
OFAFOFOCADOCAFOCODOCOCADOCOF
CFADOCACOCAFODAFDCADOFDFODAFD
AAFADCDAFACADOFADAFADOCADAFACO
CODOFOFODODADAFDOODAOOCAOOC
ACACOFOOODACODOCOFACADACODAF
OFACODADACAFOCAOADOCOCOFACADA
DOFOFOCAFODOFACOCADADAFAFACOC
OFAFACADODACOCFCOCACADODOCOF
AFADODODACOFODOFADACACODADOD
ACODACACOCAFADAADODODOCADFOD
ADODOCFOFOFAFOCOFODADODACODO
COCOCODOCACADACODOCACAFADOC
OCAFODAFOCAFADOOOCADADOCAFCC
OFOCOCACODODAFACACODACODACAC
ADODAFADODAAFAFACOFACACAFAFODA
CDADDADAFAFOCOCODACOFACOCADOF
ODAFOFFFADOCACACFDACODADODOD
ODOFOFODACODCDAFOCADODADODO
FADAFOFAADACOCOFODOCFFADOFOFAF
OFOFODACADACOFAFADOCDCAFOCFCFF
ODOCACOFADFA
Фрагмент нового файла
C*********DD******************D*A****FF
****OA*AO********************C*A*CC*F*
***********FF***********CF*DC**********F
D**************OAF*O*CD*OO**********C
D*****CF***AO**********CF*****D***OO*F
*OD*A***********************************
*********OA**AO*********FD************F
D**************D*O**********************
**********AO****FD*D**CD****F**********
*********AO**********F*A*****FD*********
***C**DC******FF**FF*****A***CF*F*O****
********A********OO***C******D***AADC*
************FF*********C********O*CD****
*******FF******F*A****F*A***DF*****F*A**
**********OO**AO*******************DCD
*A******************OA*OA**************
****************FF******FFD**FF*****OA**
OO****************C*AAAOOOA**********
*****DD************OA*CF*****OAF*******
**CF***********F**C*O********AA***D****
***AA***********OO********CC***********

7.

№37 Решу ЕГЭ
Демонстрационная версия ЕГЭ−2023 по информатике
Текстовый файл состоит из символов A, C, D, F и O.
Определите максимальное количество идущих подряд пар символов вида
согласная + гласная.
Для выполнения этого задания следует написать программу.
f = open('24.txt')
s = f.readline()
s = s.replace('CA','*').replace('DA','*').replace('FA','*')
s = s.replace('CO','*').replace('DO','*').replace('FO', '*')
k = kmax = 0
for i in s:
if i == '*':
k += 1
else:
kmax = max(k, kmax)
k=0
print(kmax)
Ответ: 95.

8.

№37 Решу ЕГЭ
Демонстрационная версия ЕГЭ−2023 по информатике
Другой способ
Текстовый файл состоит из символов A, C, D, F и O.
Определите максимальное количество идущих подряд пар символов вида
согласная + гласная.
Для выполнения этого задания следует написать программу.
Последнее значение i
будет максимальным
количеством пар

9.

Ищем максимальное значение из
списка a по длине и находим его
длину
В функциях min() и
max() можно указать
необязательный
именной
параметр key. Ему
присваивается
одноаргументная
функция, которая
выполняет какое-то
предварительное
действие над
элементами списка.
Ответ: 15.

10.

11.

12.

13.

№1 Решу ЕГЭ. Текстовый файл состоит не более чем из
106 символов X, Y и Z. Определите максимальное количество
идущих подряд символов, среди которых каждые два соседних
различны.
Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо
обработать с помощью данного алгоритма.
f = open('24_demo.txt')
s = f.readline()
k = km = 1
for i in range (1,len(s)):
if s[i] != s[i-1]:
k+=1
km = max (k, km)
else:
k=1
print (km)

14.

Вариант 1 Тема 24 Сборник С.С. Крылова
Метод split (‘A’) в Python разделяет строку на
список подстрок по разделителю A.
f = open('24var01.txt')
s = f.readline()
s = s.split('A')
maxs = 0
for i in range(len(s)-3):
a = s[i] + s[i+1] + s[i+2] + s[i+3]
maxs = max(maxs,len(a)+3)
print(maxs)

15.

Тест к варианту 1 сборник Крылова
f = open('24var01.txt')
# s = f.readline()
s = 'BACCADACEADCCA'
s = s.split('A')
print(s)
m=0
for i in range(len(s)-3):
a = s[i] + s[i+1] + s[i+2] +
s[i+3]
print(a)
m = max(m,len(a)+3)
print(m)
1 способ
BACCADACEADCCA
['B', 'CC', 'D', 'CE', 'DCC', '']
BCCDCE
CCDCEDCC
DCEDCC
11

16.

Метод join в Python
Метод join в Python отвечает за объединение
списка строк с помощью определенного
указателя. Часто это используется при
конвертации списка в строку.
Например, так можно конвертировать список букв
алфавита в разделенную запятыми строку для
сохранения.
Список должен состоять из строк.

17.

Тест к варианту 1 сборник Крылова
f = open('24var01.txt')
# s = f.readline()
s = 'BACCADACEADCCA'
print(s)
s = s.split('A')
print(s)
m=0
for i in range(len(s)-3):
a = ‘’.join(s[i:i+4])
print(a)
m = max(m,len(a))
print(m+3)
2 способ
BACCADACEADCCA
['B', 'CC', 'D', 'CE', 'DCC', '']
BCCDCE
CCDCEDCC
DCEDCC
11

18.

Метод join в Python
f = open('24var01.txt')
# s = f.readline()
s = 'BACCADACEADCCA'
print(s)
s = s.split('A')
print(s)
m=0
for i in range(len(s)-3):
BACCADACEADCCA
['B', 'CC', 'D', 'CE', 'DCC', '']
BпрCCпрDпрCE
a = 'пр'.join(s[i:i+4]) CCпрDпрCEпрDCC
print(a)
m = max(m,len(a))
DпрCEпрDCCпр
print(m + 3)
17

19.

Тест к варианту 1 сборник Крылова
2 способ
Найдем минимальное количество символов
s = 'BACCADACEADCCA'
print(s)
s = s.split('A')
print(s)
m = 100
for i in range(len(s)-3):
a = ''.join(s[i:i+4])
print(a)
m = min(m,len(a))
print(m+3)
BACCADACEADCCA
['B', 'CC', 'D', 'CE', 'DCC', '']
BCCDCE
CCDCEDCC
DCEDCC
9

20.

Вариант 4 Тема 24 Сборник С.С. Крылова
s = open("24var04.txt").read()
s = s.replace('AB', 'A*B').split(‘*’)
maxi = 0
for i in range(len(s)-21):
r = ''.join(s[i:i + 22])
maxi = max(maxi, len(r))
print(maxi)
Ответ: 10007

21.

Тема 24. Вариант 5. Сборник Крылова
f = open('24var05-08.txt')
s = f.readline()
a = s.split('00')
print(len(max(a, key=len))+2)
Тест:
s = '56002310006500'
a = s.split('00')
print(len(max(a, key=len))+2)
f = open('24var05-08.txt')
s = f.readline().replace('00','0*0')
a = s.split('*')
print(len(max(a, key=len)))
['56', '231', '065', '']
5
Ответ: 977

22.

№59 Решу ЕГЭ
Демо 2024
Текстовый файл состоит из символов T, U, V, W, X, Y и Z. Определите в
прилагаемом файле максимальное количество идущих подряд
символов (длину непрерывной подпоследовательности), среди
которых символ T встречается ровно 100 раз. Для выполнения этого
задания следует написать программу.
f = open('24_2024.txt')
s = f.readline()
#s = ‘UTVVTXXTYUUYTZ'
s = s.split('T')
m=0
for i in range(0,len(s)-100):
a = 'T'.join(s[i:i+101])
m = max(m,len(a))
print(m)
Ответ: 133

23.

№52 Решу ЕГЭ Основная волна 2023
Текстовый файл состоит не более чем из 106 символов латинского
алфавита. Определите минимальную подстроку, содержащую 100
символов "Т". Для выполнения этого задания следует написать
программу.
f = open('24.txt')
s = f.readline()
m = 1000000
for i in range(len(s)-100):
a = 'T'.join(s[i:i+101])
m = min(m,len(a))
print(m)
Ответ: 1523

24.

№47 Решу ЕГЭ Основная волна 2023
Текстовый файл состоит из символов T, U, V, W, X, Y и Z.Определите в прилагаемом
файле максимальное количество идущих подряд символов (длину непрерывной
подпоследовательности), среди которых символ Y встречается не
более 150 раз. Для выполнения этого задания следует написать программу.
f = open('24 (3).txt')
s = f.readline()
s = s.split('Y')
m=0
for i in range(0,len(s)-150):
a = ‘Y'.join(s[i:i+151])
m = max(m,len(a))
print(m)
Ответ: 244.

25.

s = open("24(78).txt").read()
s = s.replace('CD', 'C D').split()
maxi = 0
for i in range(len(s)):
r = ''.join(s[i:i + 141])
maxi = max(maxi, len(r))
print(maxi)
Ответ: 735 435.

26.

s = open("76_24.txt").read()
s = s.replace('DE', 'D E').split()
maxi = 0
for i in range(len(s)):
r = ''.join(s[i:i + 241])
maxi = max(maxi, len(r))
print(maxi)
Текстовый файл
состоит из заглавных
букв латинского
алфавита А, В, C, D, Е и
F. Определите
максимальное
количество идущих
подряд символов в
прилагаемом файле,
среди которых пара
символов DE (в
указанном порядке)
встречается не более
240 раз. Для
выполнения этого
задания следует
написать программу.
Ответ: 970 249.

27.

№ 75 Решу ЕГЭ (Основная волна 2024)
Текстовый файл состоит из заглавных букв латинского алфавита Q, R, W и
цифр 1, 2, 4. Определите в прилагаемом файле максимальное количество
идущих подряд символов, среди которых ни одна буква не стоит рядом с
буквой, а цифра — с цифрой. Для выполнения этого задания следует
написать программу.
s = open('75_24.txt').readline()
s = s.replace('Q', 'A').replace('R', 'A').replace('W',
'A').replace('2', '1').replace('4', '1')
k=1
maxlen = 0
for i in range(len(s)-1):
if s[i]!=s[i+1]:
k+=1
else:
maxlen = max(maxlen, k)
k=1
Ответ: 17
print(maxlen)

28. Демо 2025 года

29.

Демо 2025
Текстовый файл состоит из цифр 0, 6, 7, 8, 9 и знаков
арифметических операций «−» и «*» (вычитание и умножение).
Определите максимальное количество символов в непрерывной
последовательности, которая является корректным
арифметическим выражением с целыми неотрицательными
числами. В этом выражении никакие два знака арифметических
операций не стоят рядом, в записи чисел отсутствуют незначащие
(ведущие) нули и число 0 не имеет знака. В ответе укажите
количество символов.

30.

f = open('demo_2025_24.txt')
s = f.readline()
for i in '6789':
s = s.replace(i,'1')
s = s.replace('*','-')
s = s.replace('--',' ')
s = s.replace(' -',' ')
s = s.replace('- ',' ')
while ' 00' in s:
s = s.replace(' 00',' 0')
s = s.replace('-01',' 1')
s = s.replace(' 01',' 1')
s = s.strip('-')
a = s.split()
m=0
for i in a:
m = max(m, len(i))
print(m)

31.

Метод strip() возвращает копию строки, удаляя как начальные,
так и конечные символы (в зависимости от переданного
строкового аргумента).
Если аргумент не указан, все начальные и конечные пробелы
удаляются из строки
lstrip() возвращает копию строки с удаленными начальными
символами. Если аргумент chars не указан, все начальные
пробелы удаляются из строки.
Метод rstrip() возвращает копию строки с удаленными заверша
ющими символами
Если аргумент не указан, все пробелы справа удаляются из
строки.
Источник: https://pythonstart.ru/string/strip-python

32.

Найти подпоследовательность максимальной длины, которая имеет
арифметический смысл и содержит только цифры 6, 7, 8, 0 и знаки операций «−»,
«*». При этом должны выполняться следующие условия:
Возле цифры 0 не может быть знака операции.
В выражении не должно быть умножения на отрицательные числа.
В выражении не должно быть повторяющихся знаков операций, таких как «**».
Пример правильного выражения: 6787-86.Пример неправильного выражения:
6786*−78 (содержит повторяющиеся знаки операции и отрицательное число).
Ответ: 40.

33.

f = open('77_24.txt')
s = f.readline()
s = s.replace('*','-')
s = s.replace('--',' ')
s = s.replace('-0',' ')
s = s.replace('0-',' ')
s = s.strip('-')
a = s.split()
m=0
for i in a:
m = max(m,len(i))
print(m)
Найти подпоследовательность
максимальной длины, которая имеет
арифметический смысл и содержит только
цифры 6, 7, 8, 0 и знаки операций «−», «*».
При этом должны выполняться
следующие условия:
Возле цифры 0 не может быть знака
операции.
В выражении не должно быть умножения
на отрицательные числа.
В выражении не должно быть
повторяющихся знаков операций, таких
как «**».
Пример правильного выражения: 678786.Пример неправильного выражения:
6786*−78 (содержит повторяющиеся
знаки операции и отрицательное число).

34. Разные задачи

35.

Тема 24. Вариант 6. Сборник Крылова 2024
s = open('24var06.txt').readline()
inx=[i for i in range(len(s)) if s[i]=='A']
ans = []
for i in range(len(inx)-34):
ans.append(inx[i+34]-inx[i]+1)
print(min(ans))
Ответ :40

36.

Тема 24. Вариант 7. Сборник Крылова 2024
s = open('24var07.txt').readline()
ind=[]
for i in range(len(s)-1):
if s[i]+s[i+1] == 'AB':
ind.append(i)
ans = []
for i in range(len(ind)-20):
ans.append(ind[i+20]+1-ind[i]+1)
print(min(ans))
Ответ: 55

37.

Тема 24. Вариант 2. Сборник Крылова 2024
f = open('24var02.txt')
s = f.readline()
s = s.split('A')
m=0
for i in range(0,len(s)-350):
a = 'A'.join(s[i:i+351])
m = max(m,len(a))
print(m)
88024

38.

ЕГЭ по информатике 20.06.2023. Основная волна. Дальний Восток
f=open('24_59849.txt')
s=f.readline()
alfavit='0123456789ABCDEFGHIJKLMNOP'
mx=0
cnt=0
for i in range(len(s)):
if s[i] in alfavit:
cnt+=1
if cnt>mx:
mx=cnt
else:
cnt=0
mx = max(cnt, mx)
print(mx)
Ответ: 41.
English     Русский Rules