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

24.02 Поиск символа/строки по частоте

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

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

Задача 1#11760

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

Найдите количество символов V, т.е. в последовательности VDDVDMDMDMDMV будет ответ 3.

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

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

Ответ: 40816

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

Задача 2#11761

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

Найдите количество символов M, т.е. в последовательности MDVDMVDVVVDMDVD будет ответ 3.

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

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

Ответ: 80781

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

Задача 3#11762

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

Найдите количество пар символов VV, т.е. в последовательности VMVVVDVDVMVVD будет ответ 3.

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

Вложения к задаче
Показать ответ и решение
file = open("Задание 24.txt")
text = file.read()
print(text.count("VV"))

Ответ: 213

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

Задача 4#11763

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

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

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

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

Ответ: 1114

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

Задача 5#11764

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

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

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

Вложения к задаче
Показать ответ и решение
file = open("Задание 24.txt")
text = file.read()
count = 0
for i in range(len(text) - 4):
    if text[i] == ’M’ and text[i + 4] == ’M’:
        count += 1
print(count)

Ответ: 2473

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

Задача 6#25568

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

Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите символ, который чаще всего встречается в файле сразу после буквы Y. Подходящих символов может быть несколько, в ответе укажите первый символ по алфавиту.

Например, в тексте YAYRYVYA после буквы Y два раза стоит A, один раз буквы – V и R. Для этого текста ответом будет A.

Вложения к задаче
Показать ответ и решение
f = open(’Задание 24.txt’)
s = f.readline()
alp = ’QWERTYUIOPASDFGHJKLZXCVBNM’
counter = [0]*26
for i in range(len(s)-1):
    if s[i] == ’Y’:
        for j in range(len(alp)):
            if alp[j] == s[i+1]:
                counter[j] += 1
maxim = 0
ind = 0
ans = []
for i in range(len(counter)):
    if counter[i] > maxim:
        maxim = counter[i]
        ind = i
for i in range(len(counter)):
    if counter[i] == maxim:
        ans.append(i)
for i in ans:
    print(alp[i])

Варианты правильных ответов:
  1. L

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

Задача 7#25595

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

Текстовый файл содержит только заглавные буквы латинского алфавита (ABC...Z). Определите символ, который чаще всего встречается в файле между двумя одинаковыми символами. Например, в тексте CBCABABACCC есть комбинации CBC, ABA (два раза), BAB и CCC. Чаще всего – 3 раза – между двумя одинаковыми символами стоит B, в ответе для этого случая надо написать B.

Вложения к задаче
Показать ответ и решение
f = open(’Задание_24__c1mu.txt’)
s = f.readline()
alp = ’QWERTYUIOPASDFGHJKLZXCVBNM’
a = [0]*26
for i in range(1, len(s)-1):
    if s[i-1]==s[i+1]:
        for j in range(26):
            if s[i]==alp[j]:
                a[j]+=1
for i in range(26):
    if a[i]==max(a):
        print(alp[i])

Ответ: D

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

Задача 8#26157

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

Текстовый файл состоит не более чем из 106  заглавных латинских букв (A..Z). Текст разбит на строки различной длины. Необходимо найти строку, содержащую самую длинную цепочку стоящих подряд одинаковых букв. Если таких строк несколько, надо взять ту, которая в файле встретилась раньше. Определите, какая буква встречается в этой строке реже всего. Если таких букв несколько, надо взять ту, которая стоит последней в алфавите. Запишите в ответе эту букву, а затем через пробел — сколько раз она встречается во всем файле.

Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Вложения к задаче
Показать ответ и решение
f = open(’Задание_24__i0id.txt’)
alp = ’QWERTYUIOPASDFGHJKLZXCVBNM’
b = [0]*26
array = f.readlines()
maxim = 0
for x in range(len(array)):
    s = array[x]
    counter = 1
    for i in range(len(s)-1):
        if s[i] == s[i+1]:
            counter += 1
            if counter > maxim:
                maxim = counter
                ind = x
        else:
            counter = 1
s = array[ind]
for i in range(len(s)):
    for j in range(26):
        if s[i] == alp[j]:
            b[j] += 1
file = ’’.join(array)
for j in range(26):
    if b[j] == min(b):
        letter = alp[j]
print(letter, file.count(letter))

Ответ: Z 36493

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

Задача 9#26211

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

Текстовый файл состоит не более чем из 106  заглавных латинских букв. Определите символ, который чаще всего встречается в файле сразу после буквы A. В ответе запишите сначала этот символ, а потом сразу (без разделителя) сколько раз он встретился после буквы А. Если таких символов несколько, нужно вывести тот, который стоит раньше в алфавите. Например, в тексте ABCAABADDD после буквы A два раза стоит B, по одному разу – A и D. Для этого текста ответом будет B2.

Вложения к задаче
Показать ответ и решение
f = open(’Задание 24.txt’)
alp = ’QWERTYUIOPASDFGHJKLZXCVBNM’
counter = [0]*26
alp = ’’.join(sorted(list(alp)))
s = f.readline()
for i in range(len(s)-1):
    if s[i] == ’A’:
        for j in range(26):
            if s[i+1] == alp[j]:
                counter[j] += 1
for j in range(26):
    if max(counter) == counter[j]:
        print(alp[j], counter[j], sep=’’)
        break

Ответ: L1567

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

Задача 10#26691

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

Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите символ, который чаще всего встречается в файле между двумя одинаковыми символами. Например, в тексте CCBAABABCBC есть комбинации ABA, BAB, BCB и CBC. Чаще всего — 2  раза — между двумя одинаковыми символами стоит B, в ответе для этого случая надо написать B2 (без пробелов и других разделителей). Если таких символов несколько, выведите тот, который стоит раньше в алфавите.

Вложения к задаче
Показать ответ и решение
file = open("Задание_24__o4nk.txt")
text = file.readline()
mass = [0] * 26
maxim = 0
ans = ’’
for i in range(1, len(text) - 1):
    if text[i - 1] == text[i + 1]:
        mass[ord(text[i]) - 65] += 1
for i in range(len(mass)):
    if mass[i] > maxim:
        maxim = mass[i]
        ans = chr(i + 65)
print(ans, maxim, sep=’’)

Ответ: W1608

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

Задача 11#28820

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

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

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

ZCQABA

ZALMAC

CRACUT

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

Вложения к задаче
Показать ответ и решение
file = open("Задание_24__qjvg.txt")
text = []
maxim = 0
ind = 0
for i in range(1000):
    text.append(file.readline())
for i in range(len(text)):
    count = 0
    for j in range(len(text[i]) - 1):
        if ord(text[i][j]) == (ord(text[i][j + 1]) - 1):
            count += 1
            if count > maxim:
                maxim = count
                ind = i
alf = [’A’, ’B’, ’C’, ’D’, ’E’, ’F’, ’G’, ’H’, ’I’, ’J’, ’K’, ’L’, ’M’, ’N’, ’O’, ’P’, ’Q’, ’R’, ’S’, ’T’, ’U’, ’V’,
       ’W’, ’X’, ’Y’, ’Z’]
num = 0
symb = ’’
for i in alf:
    if text[ind].count(i) > num:
        num = text[ind].count(i)
        symb = i
print(maxim, symb, sep=’’)

Ответ: 31С

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

Задача 12#29459

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

Текстовый файл состоит не более чем из 106  заглавных латинских букв (A..Z )  . Текст разбит на строки различной длины. Определите количество строк, в которых количество подстрок XS  больше, чем количество подстрок XR  .

Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Вложения к задаче
Показать ответ и решение
file = open("Задание_24__rg3v.txt")
text = []
count = 0
for i in range(1000):
    text.append(file.readline())
for i in range(len(text)):
    if text[i].count(’XS’) > text[i].count(’XR’):
        count += 1
print(count)

Ответ: 371

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

Задача 13#29884

Текстовый файл состоит не более чем из 103  строк, каждая из которых состоит не более чем из 106  заглавных букв латинского алфавита. Определите номер строки (считая с 1), в которой наибольшее число символов Q  .

Для выполнения этого задания следует написать программу. Воспользуйтесь файлом "Задание_12_ДЗ". В ответе запишите номер искомой строки. Если таких строк несколько, то напишите номер первой найденной.

Вложения к задаче
Показать ответ и решение
f = open(’Задание_12_ДЗ.txt’)  
index, maxim, I = 0, 0, -1  
for line in f:  
    n = line.count(’Q’)  
    index += 1  
    if (n > maxim):  
        maxim = n  
        I = index  
print(I)

 

Ответ: 64

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

Задача 14#29885

Текстовый файл состоит не более чем из 103  строк, каждая из которых состоит не более чем из 106  заглавных букв латинского алфавита. Определите номер строки (считая с 1), в которой содержится подпоследовательность наибольшей длины, состоящая только из символов W  .

Для выполнения этого задания следует написать программу. Воспользуйтесь файлом "Задание_13_ДЗ". В ответе запишите номер искомой строки. Если таких строк несколько, то запишите номер последней найденной.

Вложения к задаче
Показать ответ и решение
f = open(’Задание_13_ДЗ.txt’)  
 
index, maxim, I = 0, 0, -1  
for line in f:  
    count = 1  
    index += 1  
    for i in range(len(line) - 1):  
        if (line[i] == line[i + 1] and line[i] == ’W’):  
            count += 1  
            if (count >= maxim):  
                maxim = count  
                I = index  
        else:  
            count = 1  
print(I)  

 

Ответ: 52

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

Задача 15#29886

Текстовый файл состоит не более чем из 103  строк, каждая из которых состоит не более чем из 106  заглавных букв латинского алфавита. Определите количество строк, в которых символов A  больше символов S  .

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

Вложения к задаче
Показать ответ и решение
f = open(’Задание_14_ДЗ.txt’)  
 
count = 0  
for line in f:  
    if (line.count(’A’) > line.count(’S’)):  
        count += 1  
print(count)

 

Ответ: 50

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

Задача 16#29888

Текстовый файл состоит не более чем из 103  строк, каждая из которых состоит не более чем из 106  заглавных букв латинского алфавита. Найдите количество нечетных строк (счет с 1) четной длины, в которых количество повторений символа A  кратно трем, при этом в первой половине строки количество сочетаний AR  не меньше количества сочетаний KARP  , а во второй половине количество символов M  не должно превышать количество символов O  .

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

Вложения к задаче
Показать ответ и решение
f = open(’file.txt’)
i = 1
count = 0
for line in f:
    if (i % 2 == 1):
        line = line.strip() # нужно убрать символ переноса строки
        n = len(line)
        if (n % 2 == 0) and (line.count(’A’) % 3 == 0):
            if (line[:n//2].count(’AR’) >= line[:n//2].count(’KARP’)) and\
                    (line[n//2:].count(’M’) <= line[n//2:].count(’O’)):
               count += 1
    i += 1
print(count)

 

Ответ: 5

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

Задача 17#29899

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

Для выполнения этого задания следует написать программу. Воспользуйтесь файлом "Задание_27_ДЗ". В ответе запишите символ, который повторяется больше всего. Английский алфавит: ABCDEF   GHIJKLM   N OP QRST  UV W XY Z  .

Вложения к задаче
Показать ответ и решение
f = open(’Задание_27_ДЗ.txt’).read()  
al = sorted(list(’QWERTYUIOPASDFGHJKLZXCVBNM’)) # по порядочку  
al_count = [0] * 26  
for i in range(len(f)):  
    al_count[al.index(f[i])] += 1  
maxim = max(al_count) # максимальное количество повторений какой-то буквы  
ind = al_count.index(maxim) # индекс первого вхождения  
print(al[ind]) # или так print(al[al_count.index(max(al_count))])

 

Ответ: B

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

Задача 18#29903

Текстовый файл состоит не более чем из 106  заглавных букв латинского алфавита. Найдите самый часто повторяющийся символ между символами A  и R  (в данном порядке: A  *символ* R  ). Если таких символов несколько, следует взять тот, что раньше по алфавиту.

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

Вложения к задаче
Показать ответ и решение
f = open(’Задание_31_ДЗ.txt’)
s = f.readline()
alph = list(’QWERTYUIOPASDFGHJKLZXCVBNM’)
alph.sort()
ar = [0] * 26
for i in range(1, len(s) - 1):
    if s[i - 1] == ’A’ and s[i + 1] == ’R’:
        ind = alph.index(s[i])
        ar[ind] += 1
print(alph[ar.index(max(ar))])

 

Ответ: O

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

Задача 19#29904

Текстовый файл состоит не более чем из 103  строк, каждая из которых содержит не более чем 102  букв латинского алфавита. Найдите строку, которая содержит максимальное количество символов A  , если таких строк несколько, то используйте первую найденную. В найденной строке найдите самый редко используемый символ (больше 0 раз).

Для выполнения этого задания следует написать программу. Воспользуйтесь файлом "Задание_32_ДЗ". В ответе запишите найденный символ и количество его повторений в найденой строке через пробел, если таких символов несколько, то запишите тот, что раньше по алфавиту.

Вложения к задаче
Показать ответ и решение
f = open(’Задание_32_ДЗ.txt’)
alph = sorted(list(’QWERTYUIOPASDFGHJKLZXCVBNM’))
alph_count = [0] * 26
find_string = ""
maxim_count_A = 0
minim = 100000000
minim_symb = ""
for i in f:
    if i.count(’A’) > maxim_count_A:
        maxim_count_A = i.count(’A’)
        find_string = i
for i in range(26):
    alph_count[i] = find_string.count(alph[i])
    if alph_count[i] < minim and alph_count[i] > 0:
        minim =  alph_count[i]
        minim_symb = alph[i]
print(minim_symb, minim)

Ответ: H 1

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

Задача 20#29919

Текстовый файл состоит не более чем из 104  строк, каждая из которых состоит не менее чем из 10 и не более чем из      103  заглавных букв A  , B  , C  , D  . Найдите количество строк, в которых либо изначально есть 10-символьный палиндром, либо его можно получить перестановкой пары символов из данной подстроки. Например, для строки ABAB  можно поменять символы A  и B  местами.

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

Вложения к задаче
Показать ответ и решение
def perest(arr):
    for i in range(10):
        for j in range(i + 1, 10):
            b = arr.copy()
            b[i], b[j] = b[j], b[i]
            if b == b[::-1]:
                return True
    return False

n = 1000
f = open("Задание_47_ДЗ.txt")
ans = 0
for i in range(n):
    s = f.readline()
    if len(s) > 9:
        for j in range(len(s) - 9):
            arr = list(s[j:j + 10])
            if perest(arr):
                ans += 1
                break
print(ans)

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