Поиск подстроки в строке

9 задач
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

Учительница литературы просит помечать тавтологии — когда одно и то же слово стоит подряд два раза: «был был», «очень очень».

Напиши программу, которая в тексте заключает каждую такую пару в квадратные скобки.

Формат входных данных

Произвольный текст до 10 000 символов, возможно в несколько строк. Слово — это последовательность букв (кириллица или латиница), цифр и подчёркиваний.

Формат выходных данных

Тот же текст, но каждое повторение подряд двух одинаковых слов обёрнуто в квадратные скобки: [слово слово]. Пунктуация и все остальные символы сохраняются.

Примечание

Регистр при сравнении слов не учитывается: Очень очень — тоже повтор. В выводе регистр оригинала сохраняется.

В заметках на телефоне ты ведёшь дневник тренировок. Даты писали по-разному: 17.04.2026, 17/04/2026, 17-04-2026, 17 апреля 2026.

Приведи все найденные даты к ISO-формату YYYY-MM-DD.

Формат входных данных

Произвольный текст до 10 000 символов, возможно в несколько строк. Формат даты: день (1–2 цифры), разделитель (., /, - или пробел), месяц (2 цифры или слово на русском), разделитель, год (4 цифры).

Формат выходных данных

Каждая найденная дата в формате YYYY-MM-DD на отдельной строке в порядке появления.

Примечание

Поддерживаются названия всех 12 месяцев: январь, февраль, ..., декабрь в любой форме (январь, января, январём — достаточно, чтобы начало совпало с основой).

Мама выгрузила из электронного дневника текстовую выписку. Каждая строка выглядит так: название предмета, двоеточие, оценки через запятую или пробел.

Напиши программу, которая для каждого предмета посчитает средний балл.

Формат входных данных

Одна или несколько строк вида Название предмета: оценки. Название предмета — одно или несколько русских слов (только буквы и пробелы). Оценки — целые числа от 2 до 5, разделённые запятыми и/или пробелами.

Формат выходных данных

Для каждого предмета в том же порядке, в котором они встретились во входе, выведи строку вида Предмет: X.XX — название, двоеточие, пробел, средний балл с двумя знаками после точки.

Примечание

Используй округление Python по умолчанию (функция round). Предметы без оценок (если такие попадутся) в выводе пропускай.

В Telegram-чате класса ребята обращаются друг к другу через @никнейм. Ты — староста и хочешь понять, кого упоминают чаще всех.

Никнейм — это символ @, за которым идут от 5 до 32 символов: латинские буквы, цифры и подчёркивания. Короткие последовательности (меньше 5 символов) никнеймами не считаются.

Формат входных данных

В первой строке — число \(N\) (\(1 \le N \le 100\)) — сколько самых упоминаемых никнеймов нужно вывести.
Далее — произвольный текст чата до 10 000 символов.

Формат выходных данных

Топ-\(N\) никнеймов в нижнем регистре, каждый на отдельной строке. Порядок — по убыванию частоты упоминаний; при равенстве частот раньше идёт тот, кто первым встретился в тексте.

Если уникальных никнеймов меньше \(N\), выведи все, что есть.

Примечание

Регистр при подсчёте игнорируется: @Katya и @katya — один человек.

Ты ведёшь паблик класса во ВКонтакте и хочешь собирать статистику по хештегам.

Напиши программу, которая читает текст поста и выводит все хештеги в порядке появления.

Хештег — это символ #, за которым идут один или более символов: буквы (латиница или кириллица), цифры или подчёркивания.

Формат входных данных

Произвольный текст от одной до 100 строк, общей длиной не более 10 000 символов.

Формат выходных данных

Каждый найденный хештег на отдельной строке в порядке появления в исходном тексте.

📧
Шаг 2: Письма из ниоткуда
Просто
День второй. На почту приёмной комиссии завалилось 347 писем от абитуриентов. Кто-то пишет email в подписи, кто-то в теле письма, кто-то прямо в теме: «Если что, пишите на vasya.gamer@hse.ru, я там всегда онлайн». Твой начальник просит собрать все email в один список, потому что Excel у него снова завис. Печаль.
Условие задачи
 

Email считается валидным, если он состоит из:

  • имени из латинских букв, цифр и точек,
  • символа @,
  • домена из латинских букв, цифр и точек,
  • точки и доменного зона из 2–4 латинских букв (например, .ru, .edu, .com).
Входные данные

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

Выходные данные

Все найденные email-адреса, по одному на строке, в порядке появления.

Подсказка: Шаблон: [a-zA-Z0-9.]+@[a-zA-Z0-9.]+\.[a-zA-Z]{2,4}. Не забудь экранировать точку перед доменной зоной: \..

Фермер Джон купил подписку журнала Good Hooveskeeping для своих коров, теперь им есть что почитать. К несчастью, последний номер содержит довольно неподходящую статью, как приготовить совершенный бифштекс. ФД хочет чтобы его коровы не увидели эту статью.

ФД взял текст из журнала и создал строку S длиной не более чем 10^6 символов. Из неё он хочет удалить все вхождения подстроки T длиной <= 100 символов неподходящего содержания. Чтобы сделать это, ФД ищет первое вхождение T в S и удаляет его. Затем он повторяет процесс опять, снова удаляя первое вхождение T, продолжая так до тех пор, пока больше не станет вхождений T в S. Заметим, что удаление одного вхождения может создать другое вхождение, которое не существовало раньше.

Пожалуйста, помогите ФД определить конечное содержание строки S после завершения всех удалений.

Формат входных данных

Первая строка содержит S. Вторая строка будет содержать T. Длина T не более чем длина S, и все символы S и T - маленькие латинские буквы (a..z).

Формат выходных данных

Строка S после завершения всех удалений. Гарантируется, что S не станет пустой после завершения процесса всех удалений.

Фермер Джон идёт по дорожке и думает, что не может потеряться.

Вдоль дороги имеется \(N\) ферм (\(1 \leq N \leq 100\)). На фермах нет номеров, поэтому ФД тяжело ориентироваться. Зато на каждой ферме имеется цветной почтовый ящик со стороны дороги. поэтому ФД надеется, что если он посмотрит на цвета ближайших почтовых ящиков, он сможет однозначно определить, где он находится.

Каждый цвет почтового ящика обозначается буквой в интервале A..Z, таким образом, последовательность \(N\) почтовых ящиков вдоль дороги представляется строкой длины \(N\), содержащей символы в интервале A..Z. Некоторые почтовые ящики могут иметь одинаковые цвета. ФД хочет узнать минимальное число \(K\) такое, что если он посмотрит на любую последовательность из \(K\) последовательных ящиков, он уникально определит местоположение этой последовательности на дороге.

Например, предположим, что последовательность ящиков вдоль дороги есть 'ABCDABC'. ФД не может выбрать \(K=3\), поскольку если он увидит 'ABC', то имеется два расположения такой строки вдоль дороги. Минимальное значение \(K\), которое работает, \(K=4\), поскольку любые последовательные 4 символа уникально определяют его позицию вдоль дороги.

ФОРМАТ ВВОДА (файл whereami.in):

Первая строка ввода содержит \(N\), вторая строка содержит строку из \(N\) символов, каждый в интервале A..Z.

ФОРМАТ ВЫВОДА (файл whereami.out):

Выведите строку, содержащую одно целое число, указывающее минимальное значение \(K\), которое решает задачу ФД.

Moo Sick#89799

Problem 3: Moo Sick [Rob Seay]
Каждый знает, что коровы любят слушать музыку. Великий композитор Мууцарт однажды открыл, некоторые последовательности нот действуют на коров угнетающе. Поэтому их нужно избегать во всех композициях для коров.
Фермер Джон, не знакомый с этим фактом, решил проигрывать свою любимую песню через громкоговорители в амбаре. Ваша задача – определить все угнетающие последовательности нот в его песне, чтобы оценить, насколько она вредна для коров.
Песня, которую озвучивает ФД, представляет собой последовательность из N нот, каждая в диапазоне от 1 до 88. Угнетающая последовательность состоит из С (1<=C<=10) различных нот, также целых чисел от 1 до 88. Однако, если ноты транспонированы (увеличены или уменьшены на одну и ту же величину), или переупорядочены, то эта последовательность нот все равно остается угнетающей. Например, если «4 6 7» - угнетающая последовательность нот, то последовательности «3 5 6» (транспонирована на -1), «6 8 9» (транспонирована на +2), «6 4 7» (переупорядочена), «5 3 6» (транспонирована и переупорядочена) , также являются угнетающими.
Таким образом, угнетающей последовательностью нот являются C подряд идущих нот, удовлетворяющих вышеописанному критерию. Поэтому она однозначно определяется своим стартовым положением в песне. Определите стартовое положение всех угнетающих последовательностей.
PROBLEM NAME: moosick
Формат входных данных
* Строка 1: Одно целое число: N.
* Строки 2..1+N: N нот в песне ФД, по одной ноте на строке.
* Строка 2+N: Одно целое число: C.
* Строки 3+N..2+N+C: C нот определяющих угнетающую последовательность. Все транспозиции и переупорядочивания также угнетающие последовательности.


Формат выходных данных
* Строка 1: Количество, K, угнетающих последовательностей, которые есть в песне ФД. Заметим, что различные экземпляры угнетающих последовтельностей могут перекрываться друг с другом.
* Строки 2..1+K: Каждая строка указывает начальную позицию угнетающей последовательности (1 – первая нота в песне ФД, N - последняя). Эти начальные позиции должны указываться в порядке возрастания.
Примечание
Две угнетающих последовательности встретились в песне ФД и они перекрываются в одной ноте. Первая – 8,5,7 (транспонирована на 1 и переупорядочена), начинается с позиции 2, а вторая 7,9,10 (транспонирована на 3) , начинается с позиции 4.

Поделиться
Класснуть