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

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

Задача 1#88143

Текстовый файл содержит только заглавные буквы латинского алфавита (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

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное обучение
в Школково

Для детей ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Брянской областей, а также школьникам, находящимся в пунктах временного размещения Крыма обучение на платформе бесплатное.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ или олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

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