Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3588675
А
Аноним
21 марта 2026 06:33 · публичный вопрос
А
Аноним

оки ищет в книгах своё любимое слово и радуется каждый раз, когда находит. Текст до первого появления этого слова и после последнего он красит чёрным. Само слово он не красит.…

Запрос пользователя

Оки ищет в книгах своё любимое слово и радуется каждый раз, когда находит. Текст до первого появления этого слова и после последнего он красит чёрным. Само слово он не красит. Даны фрагмент текста и любимое слово Локи. Выведи всё, что Локи не закрасил.

Ответ нейросети
21 марта 2026 06:33

Спасибо. Чтобы точно выполнить задание, мне нужен сам фрагмент текста и любимое слово Локи. Пришлите, пожалуйста, текст и слово. Я затем выведу часть текста, которую Локи не закрасил, согласно правилам.

Пока что объясню подробно алгоритм решения и дам готовый код, чтобы можно было проверить на любом входном примере.

Как понять задачу

  • Локи закрашивает цветом весь текст до первого появления слова и после последнего появления слова.
  • Само слово он не закрашивает.
  • Значит не закрашенной останется та часть текста, которая лежит между началом первого появления слова и концом последнего появления слова (включительно самого слова).

Шаги решения (пошагово)

  1. Найти первое вхождение слова в тексте. Обозначим его начало как start_first.
    • Если слова нет вообще, то вся строка не закрашена, ответ — весь текст.
  2. Найти последнее вхождение слова в тексте. Обозначим его начало как start_last.
  3. Определить конец последнего вхождения как end_last = start_last + len(word) - 1.
  4. Но удобнее работать с срезами Python: возьмём конец как индекс после последнего слова end_exclusive = start_last + len(word).
  5. Ответом будет подстрока от start_first до end_exclusive (включительно не нужен, т.к. конец — это граница после последнего слова).
    • В Python это: result = text[start_first:end_exclusive]
  6. Вариант с чувствительностью к регистру:
    • По умолчанию считаем точное совпадение (регистры должны совпадать). Если нужен регистр-нечувствительный вариант, можно привести к нижнему регистру и искать там.
  7. Вариант со строгим поиском целого слова (через границы слов) — если нужно считать слово именно целым словом, а не частью другого слова — можно использовать регулярное выражение r"\bword\b" или аналог в нужном языке.

Пример

  • Текст: "abc def gh def ijk"
  • Слово: "def"
  • Первое вхождение начинается на позиции 4, последнее — на позиции 8, длина слова 3, end_exclusive = 11.
  • Результат: текст[4:11] = "def gh def"

Готовый минимальный код на Python

  • Вариант 1 (обычный поиск по подстроке, чувствителен к регистру): def not_colored_part(text, word): first = text.find(word) if first == -1: return text # слова нет — вся строка не закрашена last = text.rfind(word) end_exclusive = last + len(word) return text[first:end_exclusive]

  • Вариант 2 (чувствительность к регистру не нужна, поиск по слову без учёта регистра): def not_colored_part_case_insensitive(text, word): lower_text = text.lower() lower_word = word.lower() first = lower_text.find(lower_word) if first == -1: return text last = lower_text.rfind(lower_word) end_exclusive = last + len(lower_word) return text[first:end_exclusive]

  • Вариант 3 (если нужно считать только целые слова, а не подстроки внутри слов, можно использовать regex): import re def not_colored_part_whole_words(text, word): pattern = re.compile(r'\b' + re.escape(word) + r'\b') matches = list(pattern.finditer(text)) if not matches: return text first_start = matches[0].start() last_end = matches[-1].end() return text[first_start:last_end]

Что мне нужно от вас

  • Пришлите фрагмент текста и само любимое слово Локи.
  • Если нужно учитывать регистр или считать слова строго целыми (через границы слов), скажите, и я подстрою решение под это требование.

Готов приступить сразу после того как вы пришлёте текст и слово.