Тема 24. Обработка символьной информации

24.03 Прочие прототипы

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела обработка символьной информации
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 1#11770

Текстовый файл состоит не более чем из 106  символов V, D, M.

Найдите самую длинную последовательность, состоящую из рядом стоящих символов V, т.е. в последовательности VVMMVDVVVVMDMVDVVVV такой последовательностью будет VVVV.

Для выполнения этого задания следует написать программу. В ответ запишите длину искомой последовательности.

Вложения к задаче
Показать ответ и решение
s = open("Задача_6__uhdp.txt").read()
ans = 0
count = 1
for i in range(len(s) - 1):
    if s[i] == s[i + 1] and s[i] == "V":
        count += 1
        ans = max(ans, count)
    else:
        count = 1
print(ans)

Ответ: 2

Ошибка.
Попробуйте повторить позже

Задача 2#11780

Текстовый файл состоит не более чем из 105  цифр от 0 до 9 и знаков суммы «+». Определите сумму всех цифр в данном файле. В ответе укажите полученную сумму.

Вложения к задаче
Показать ответ и решение
s = open("Задача 6.txt").read()
summa = int(s[0])
for i in range(2, len(s), 2):
    summa += int(s[i])
print(summa)

Ответ: 69046

Ошибка.
Попробуйте повторить позже

Задача 3#11781

Текстовый файл состоит не более чем из 105  цифр от 0 до 9 и знаков суммы «+». Определите сумму всех цифр в данном файле и их среднее значение. В ответе укажите полученную сумму, а затем среднее значение, округленное до целых через пробел.

Вложения к задаче
Показать ответ и решение
s = open("Задача_7__uhe0.txt").read()
count = 1
summa = int(s[0])
for i in range(2, len(s), 2):
    summa += int(s[i])
    count += 1
print(summa, summa / count)

Ответ: 47524 1

Ошибка.
Попробуйте повторить позже

Задача 4#11782

Текстовый файл состоит не более чем из 105  цифр от 0 до 9 и знаков «+» и «-». Вычислите значение в файле в соответствии со знаками. В ответе укажите полученное значение.

Вложения к задаче
Показать ответ и решение
s = open("Задача 8.txt").read()

summa = int(s[0])
for i in range(1, len(s), 2):
    if s[i] == "+":
        summa += int(s[i + 1])
    else:
        summa -= int(s[i + 1])
print(summa)

Ответ: 45796

Ошибка.
Попробуйте повторить позже

Задача 5#11783

Текстовый файл состоит не более чем из 105  цифр от 0 до 9 и знаков «+» и одного знака равно. Определите будет ли сумма слева от знака равно равна сумме справа. Если суммы равны, то указать в ответе значение одной суммы. В противном случае указать большую из сумм, а затем наименьшую через пробел.

Вложения к задаче
Показать ответ и решение
f = open("Задача 9.txt").read()

print([sum(int(x) for x in i.split("+")) for i in f.split("=")])

Ответ: 27993 19590

Ошибка.
Попробуйте повторить позже

Задача 6#16440

Для детей Санта подготовил 3 различных вида подарков: X, Y и Z. Санта Клаус записал все подарки, которые он подарит детям в строку. Строка состоит из символов X, Y и Z. Напишите программу, которая подсчитывает в строке кол-во подарков вида Y. В ответ запишите число для строки "YXYZYXZYXZXYZXXXZZYYZXYYZXZZX".

Показать ответ и решение
s = "YXYZYXZYXZXYZXXXZZYYZXYYZXZZX"
counter = 0

for i in range(len(s)):
    if s[i] == "Y":
        counter += 1
print(counter)

Ответ: 9

Ошибка.
Попробуйте повторить позже

Задача 7#16458

У Санты Клауса на базе стоят олени, которые делятся на три группы: молодые, в самом расцвете сил и пожилые. Санта записал в строку всех своих оленей, где буква M - молодые, K - в самом расцвете сил и P - пожилые. Напишите программу и посчитайте кол-во оленей в самом расцвете сил. В ответ запишите результат программы для строки "MPKKMKMPKMMMKPKPKMKPMKPMKMPKMKKMPP".

Показать ответ и решение
s = input()

counter = 0
for i in range(len(s)):
    if s[i] == "K":
        counter += 1
print(counter)

Ответ: 13

Ошибка.
Попробуйте повторить позже

Задача 8#19187

Сейчас вы посмотрите на файл, где содержатся только буквы A и B. Когда-нибудь задумывались во сколько раз буква A встречается чаще, чем буква B? В любом случае требуется найти вышеописанную величину в текстовом файле, который состоит не более чем из 106  английских символов A и B. Для выполнения этого задания следует написать программу.

Примечание: Оба символа встречаются хотя бы один раз.

Ответ округлите до двух знаков после точки.

Вложения к задаче
Показать ответ и решение
A = open("Задача 1.txt", "r").read().count("A")
B = open("Задача 1.txt", "r").read().count("B")

print(A/B // 0.01 / 100)

Ответ: 1.31

Ошибка.
Попробуйте повторить позже

Задача 9#19189

Текстовый файл состоит не более чем из 106  цифр. Определите сумму двузначных палиндромов (чисел, которые читаются в две стороны одинаково). Для выполнения этого задания следует написать программу. Гарантируется, что хотя бы одно из таких сочетаний есть.

Вложения к задаче
Показать ответ и решение
f = open("Задача 3.txt", "r")
s = f.read()
summ = 0

for i in range(len(s) - 1):
    if (s[i] == s[i+1]):
        summ += int(s[i] + s[i+1])
print(summ)

Ответ: 3103089

Ошибка.
Попробуйте повторить позже

Задача 10#19191

Текстовый файл состоит не более чем из 5000  символов S, H, K, O, L, V. Определите сколько раз встречается слово SHKOLKOVO. Для выполнения этого задания следует написать программу. Гарантируется, что хотя бы один раз такое слово встречается.

Вложения к задаче
Показать ответ и решение
print(open("Задача 5.txt", "r").read().count("SHKOLKOVO"))

Ответ: 140

Ошибка.
Попробуйте повторить позже

Задача 11#20156

Текстовый файл состоит не более чем из 106  символов P,K  .

Найдите и запишите в ответ количество символов P  в файле.

Для выполнения этого задания следует написать программу.

Вложения к задаче
Показать ответ и решение
f = open("1.txt", "r")  
string = f.readline()  
f.close()  
 
print(string.count("P"))

Ответ: 500287

Ошибка.
Попробуйте повторить позже

Задача 12#20157

Текстовый файл состоит не более чем из 106  символов P,K.

Найдите из запишите в ответ количество подстрок P K  в файле. Для последовательности PKKP  P K  ответом будет 2.

Для выполнения этого задания следует написать программу.

Вложения к задаче
Показать ответ и решение
f = open("2.txt", "r")  
string = f.readline()  
f.close()  
 
print(string.count("PK"))

Ответ: 249736

Ошибка.
Попробуйте повторить позже

Задача 13#20158

Текстовый файл состоит не более чем из 106  символов P,K.

Найдите из запишите в ответ количество пар рядом стоящих символов P  в файле. Для последовательности P KP PP KP P  ответом будет 3.

Для выполнения этого задания следует написать программу.

Вложения к задаче
Показать ответ и решение
f = open("24.txt")
s = f.readline()

ans = 0
for i in range(len(s) - 1):
    if s[i] == s[i + 1] == "P":
        ans += 1

print(ans)

Ответ: 694797

Ошибка.
Попробуйте повторить позже

Задача 14#20159

Текстовый файл состоит не более чем из 106  символов P,K.

Найдите из запишите в ответ количество пар одинаковых рядом стоящих символов в файле. Для последовательности P KP PP PKKP  P  ответом будет 5.

Для выполнения этого задания следует написать программу.

Вложения к задаче
Показать ответ и решение
f = open("4.txt", "r")  
string = f.readline()  
f.close()  
 
answer = 0  
for i in range(len(string) - 1):  
    if string[i] == string[i + 1]:  
        answer += 1  
print(answer)

Ответ: 722123

Ошибка.
Попробуйте повторить позже

Задача 15#20160

Текстовый файл состоит не более чем из 106  символов P,K.

Найдите из запишите в ответ длину самой длинной последовательности различных рядом стоящих символов в файле. Для последовательности P KP P PP KKP  P  ответом будет 3.

Для выполнения этого задания следует написать программу.

Вложения к задаче
Показать ответ и решение
f = open("5.txt", "r")  
string = f.readline()  
f.close()  
 
answer = 0  
length = 1  
for i in range(len(string) - 1):  
    if string[i] != string[i + 1]:  
        length += 1  
        answer = max(answer, length)  
    else:  
        length = 1  
print(answer)

Ответ: 13

Ошибка.
Попробуйте повторить позже

Задача 16#22905

Задание выполняется с использованием прилагаемых файлов

Текстовый файл содержит последовательность из строчных и заглавных букв английского алфавита и цифр. Всего не более 106  символов. Назовём локальным минимумом символ, номер которого в кодовой таблице меньше номеров предыдущего и последующего символов. Самый первый и самый последний символ не являются локальными минимумами.

Определите наибольшее расстояние между двумя соседними локальными минимумами. Расстоянием между элементами будем считать разность их индексов.

Вложения к задаче
Показать ответ и решение
f = open(’Задание_24__k3bz.txt’)
s = f.readline()
maxim = 0
counter = 0
flag = False
for i in range(1, len(s)-1):
    if s[i] < s[i-1] and s[i] < s[i+1]:
        counter = 0
        flag = True
    if flag:
        counter += 1
        if counter > maxim:
            maxim = counter
print(maxim)

Ответ: 29

Ошибка.
Попробуйте повторить позже

Задача 17#23392

Задание выполняется с использованием файла string.txt

Текстовый файл состоит не более чем из 106  заглавных латинских символов.

Найдите количество сочетаний символов AR  ,

т.е. в последовательности KKAROKOKARAROKAR будет ответ 4.

Для выполнения этого задания следует написать программу. В ответ запишите количество таких символов.

Вложения к задаче
Показать ответ и решение
f = open("string.txt")
s = f.readline()

ans = 0
for i in range(len(s) - 1):
    if s[i : i + 2] == "AR":
        ans += 1
print(ans)

Ответ: 134

Ошибка.
Попробуйте повторить позже

Задача 18#23393

Задание выполняется с использованием файла string.txt.

Текстовый файл состоит не более чем из 106  заглавных латинских символов.

Найдите количество пар, стоящих через один элемент (разница в индексе равна 2), символов AM  A  , т.е. в последовательности AMAMAMMAMAMAMA будет 5 пар.

Для выполнения этого задания следует написать программу. В ответ запишите количество таких пар.

Вложения к задаче
Показать ответ и решение
f = open("string.txt")
s = f.readline()

ans = 0
for i in range(len(s) - 2):
    if s[i] == "A" and s[i] == s[i + 2]:
        ans += 1
print(ans)

Ответ: 138

Ошибка.
Попробуйте повторить позже

Задача 19#23395

Задание выполняется с использованием файла string.txt

Назовём локальным нестрогим минимумом символ, номер которого в кодовой таблице меньше или равен номерам предыдущего и последующего символов. Самый первый и самый последний символ не являются локальными нестрогими минимумами. Определите наибольшее расстояние между двумя соседними локальными нестрогими минимумами. Расстоянием между элементами будем считать разность их индексов.

Вложения к задаче
Показать ответ и решение
f = open("string.txt")  
s = f.readline()  

ind = []  
ans = 0  
for i in range(1, len(s) - 1):  
    if ord(s[i - 1]) >= ord(s[i]) <= ord(s[i + 1]):  
        ind.append(i)

for i in range(len(ind)-1):  
    ans = max(ans, ind[i + 1] - ind[i])
 
print(ans)
Ответ: 9

Ошибка.
Попробуйте повторить позже

Задача 20#23396

Текстовый файл words.txt содержит только заглавные буквы латинского алфавита (ABC...Z). Текст разбит на строки различной длины. Необходимо найти строку, содержащую наибольшее количество пар соседних букв, которые стоят в таком же порядке как и в алфавите (например, AB, BC, CD и т.д.; в цепочке ABC две таких пары). Если таких строк несколько, надо взять ту, которая в файле встретилась раньше.

Выведите максимальное количество пар, встреченных среди всех строк, а также букву из данной строки, которая встречается чаще всего. Если таких букв несколько, вывести ту, что идет раньше по алфавиту.

Пример. Исходный файл:

ZCQABA

ZALMAC

CRACUT

В этом примере в первой и второй строках по одной подходящей паре (AB и LM), в третьей таких пар нет. Берём первую строку, т.к. она раньше встречается в файле. В этой строке чаще других встречается буква А. Если бы она была не единственной, то выбрали ту букву, что раньше стоит в алфавите. В ответе для этого примера надо записать 1A.

Вложения к задаче
Показать ответ и решение

Решение 1

f = open(’words.txt’)
s = []

while True:
    # считываем строку
    line = f.readline().replace(’\n’, ’’)
    # прерываем цикл, если строка пустая
    if not line:
        break
    s.append(line)

maxim = 0
letter = ’’
for i in range(len(s)):
    count = 0
    for j in range(len(s[i])-1):
        if ord(s[i][j]) == ord(s[i][j+1]) - 1:
            count += 1
    if count > maxim:
        maxim = count
        t = sorted(s[i])
        maxim_letter = 0
        for k in t:
            if t.count(k) > maxim_letter:
                maxim_letter = t.count(k)
                letter = k
print(maxim, letter, sep = ’’)

 

Решение 2

f = open(’words.txt’)
n = 1000
ans = ’’
ma = 0
for i in range(n):
    count = 0
    s = f.readline()
    s = s.strip() #чтобы убрать символ переноса строки
    for j in range(len(s) - 1):
        if ord(s[j]) + 1 == ord(s[j+1]):
            count += 1
    if count > ma:
        ma = count
        ans = s

alf = [0] * 26
for i in range(len(ans)):
    alf[ord(ans[i]) - 65] += 1

bukva = ’’
maxim = max(alf)
for i in range(26):
    if alf[i] == maxim:
        bukva = chr(i + 65)
        break

print(ma, bukva)

Ответ: 31C
Рулетка
Вы можете получить скидку в рулетке!