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

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

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

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

Задача 41#82921Максимум баллов за задание: 1

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

Вложения к задаче
Показать ответ и решение
s = open(’24_13100.txt’).readline()
d = {x: s.count(x) for x in sorted(set(s))}
mx = 0
letters = ’’
for i in d.items():
    if i[1] > mx:
        mx = i[1]
        letters += i[0]
# Определили две самые часто встречающиеся буквы
letters = letters[-2:]
print(s.count(letters[::-1]))

Ответ: 1664

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

Задача 42#88142Максимум баллов за задание: 1

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

Вложения к задаче
Показать ответ и решение
Способ решения 1:
s = open(’24_M1.txt’).readline()
d = {x: 0 for x in sorted(set(s))}#словарь, в котором в качестве ключа у нас буква,
# а в качестве значения - количество раз сколько она встречается по определенному условию
for i in range(len(s)-2):
    if s[i] == s[i+1]:#если два рядом стоящих символа равны между собой
        d[s[i+2]] += 1#то к значению той буквы, что стоит за этой парой, добавляем единицу
#выводим букву и количество раз, сколько она встречается в файле
print([(x,s.count(x)) for x in d.keys() if d[x] == max(d.values())])

Способ решения 2:
s = open(’24_M1.txt’).readline()
count = [0]*len(set(s))# создаем массив длиной количества различных букв в файле,
#каждый элемент - это количество раз встреченных определенных букв по заданному условию.
#к примеру,count[0] - количество раз, сколько встретилась буква А,
#count[1] - количество раз, сколько встретилась буква B и так далее.
for i in range(len(s)-2):
    if s[i] == s[i+1]:
        count[ord(s[i+2]) % 65] += 1 #Функция ord возвращает числовое значение буквы,
        # остаток от 65 берется, поскольку у буквы A в таблице символов значение 65,
        # у буквы B - 66 и так далее.
        # нужно сделать так, чтобы числовое значение буквы А стало равным 0,
        # для B - 1 и так далее, для этого и берем остаток.
letter = chr(count.index(max(count)) + 65)
# Функция chr обратна ord, числовое значение превращает в символ
#определяем букву, которая встречалась максимальное количество раз по заданному условию.
print(letter,s.count(letter))

Ответ: W110345

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

Задача 43#88143Максимум баллов за задание: 1

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

Вложения к задаче
Показать ответ и решение
Способ решения 1:
s = open(’24_M1.txt’).readline()
d = {x: 0 for x in sorted(set(s))}#словарь, в котором в качестве ключа у нас буква,
# а в качестве значения - количество раз, сколько она встречается по определенному условию
for i in range(len(s)-2):
    if s[i] == s[i+2]:#если два рядом стоящих символа равны между собой
        d[s[i+1]] += 1#то к значению той буквы, что стоит между этой пары добавляем единицу
#выводим букву и количество раз, сколько она встречается в файле
print([(x,s.count(x)) for x in d.keys() if d[x] == min(d.values())])

Способ решения 2:
s = open(’24_M1.txt’).readline()
count = [0]*len(set(s))# создаем массив длиной количества различных букв в файле,
#каждый элемент - это количество раз встреченных определенных букв по заданному условию.
#к примеру,count[0] - количество раз, сколько встретилась буква А,
#count[1] - количество раз, сколько встретилась буква B и так далее.
for i in range(len(s)-2):
    if s[i] == s[i+2]:
        count[ord(s[i+1]) % 65] += 1 #Функция ord возращает числовое значение буквы,
        #остаток от 65 берется поскольку у буквы A в таблице символов значение 65,
        #у буквы B - 66 и так далее.
        #нужно сделать так, чтобы числовое значение буквы А стало равным 0,
        #для B - 1 и так далее, для этого и берем остаток.
letter = chr(count.index(min(count)) + 65)
#Функция chr обратна ord, числовое значение превращает в символ
#определяем букву, которая встречалась минимальное количество раз по заданному условию.
print(letter,s.count(letter))

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