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

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

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

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

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

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

Вложения к задаче
Показать ответ и решение
# Слово для анализа
word = ’TIKTOK’
word_lenght = len(word)

# Чтение содержимого файла
s = open(’text.txt’).readline()

count = 0

# Проверка всех подстрок длиной 6 (длина TIKTOK)
for start in range(len(s) - word_lenght + 1):
    substring = s[start:start + word_lenght]

    # Если подстрока отсортирована совпадает с отсортированной TIKTOK, увеличиваем счетчик
    if sorted(substring) == sorted(word):
        count += 1

print(count)

Ответ: 2

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

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

Текстовый файл состоит из символов, обозначающих заглавные буквы латинского алфавита и цифры от 1 до 9 включительно. Определите количество подстрок, которые являются простым числом. Так для строки ABC13D72F такой подстрокой будет только 13, и ответ 1.

Примечание: все числа заключены между буквами или между буквой и началом или концом строки.

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

Решение с помощью замен

def simple(x):return x > 1 and all(x % y for y in range(2,int(x**0.5)+1))
f = open(’24_12946.txt’).readline().strip()
for i in ’QWERTYUIOPASDFGHJKLZXCVBNM’:
    f = f.replace(i,’*’)
f = f.split(’*’)

simple_numbers = [x for x in f if len(x) > 0 and simple(int(x))]
print(len(simple_numbers))

Решение с помощью регулярных выражений

def simple(x):
    return x > 1 and all(x % y for y in range(2,int(x**0.5)+1))
from re import *
f = open("24_12946.txt")
s = f.readline()
a = findall(r’\d+’, s)
simple_numbers = [x for x in a if len(x) > 0 and simple(int(x))]
print(len(simple_numbers))

Ответ: 797391

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

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

Текстовый файл состоит из символов, обозначающих заглавные буквы латинского алфавита и цифры от 1 до 9 включительно. Определите количество различных чисел в файле, у которых ровно 6 нетривиальных делителей.

Примечание: все числа заключены между буквами или между буквой и началом или концом строки. Таким образом в строке ABC123D лишь одно число - 123.

Вложения к задаче
Показать ответ и решение
def divs(x):
    d = set()
    for i in range(2, int(x**0.5) + 1):
        if x % i == 0:
            d |= {i,x//i}
    return sorted(d)

f = open("24_12946.txt").readline().strip()

for i in "QWERTYUIOPASDFGHJKLZXCVBNM":
    f = f.replace(i, "*")

f = f.split("*")
numb = [x for x in f if len(x) > 0 and len(divs(int(x))) == 6]
print(len(set(numb)))

Ответ: 5301

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

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

Текстовый файл состоит из символов, обозначающих заглавные буквы латинского алфавита и цифры от 1 до 9 включительно. Определите количество подстрок, начинающихся с цифры, большей 0, за которой следуют буквы, причём количество букв равно цифре, с которой начинается подстрока.

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

s = s.replace(’1’, ’ 1’)
s = s.replace(’2’, ’ 2’)
s = s.replace(’3’, ’ 3’)
s = s.replace(’4’, ’ 4’)
s = s.replace(’5’, ’ 5’)
s = s.replace(’6’, ’ 6’)
s = s.replace(’7’, ’ 7’)
s = s.replace(’8’, ’ 8’)
s = s.replace(’9’, ’ 9’)

words = s.split()
for i in words:
    digits = int(i[0])
    if len(i) - 1 >= digits:
        count += 1
print(count)

Ответ: 745819

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

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

Текстовый файл состоит из символов, обозначающих заглавные буквы латинского алфавита и цифры от 1 до 9 включительно. В файле перемешались числа 16сс с буквами. Нужно определить количество различных чисел, которые в 10сс больше 132.

Примечание: все числа заключены между буквами или между буквой и началом или концом строки, при этом символы ABCDEF считаются цифрами 16сс.

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

m = "QWRTYUIOPSGHJKLZXVNM"

for i in m:
    s = s.replace(i, "*")

s = s.split("*")
num = [x for x in s if len(x) > 0 and int(x, 16) > 132]
print(len(set(num)))

Ответ: 204512

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

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

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

Вложения к задаче
Показать ответ и решение
s = open("24_M2.txt").readline()
count = 0
for i in range(len(s)-3):
    if (s[i] == s[i+3] and s[i+1] != s[i+2]) or (s[i] != s[i+3] and s[i+1] == s[i+2]):
        #нам подходят два случая: когда первый и последний символы совпадают, а второй и третий - нет,
        #и когда первый и последний символы не совпадают, а второй и третий - да.
        #Только в таких случаях мы можем образовать палиндром заменой ровно одного символа.
        count += 1
print(count)

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