Вопрос задан 24.03.2025 в 21:20. Предмет Информатика. Спрашивает Кузьмин Демьян.

Слова и буквы


Ограничение времени 1 секунда

Ограничение памяти 64Mb

Ввод стандартный ввод или input.txt

Вывод стандартный вывод или output.txt


Напишите программу, которая считывает слова, слово «стоп» — сигнал остановки (оно не должно принимать участие в анализе). Из введённых слов нужно выбрать самое длинное и самое короткое (гарантируется, что все они имеют разную длину) и проверить, есть ли все буквы короткого слова в длинном, при этом количество повторений букв не учитывается. Вывести «ДА» или «НЕТ» в зависимости от этого.


Формат ввода

Слова разной длины, из которых нужно выбрать кратчайшее и длиннейшее.

После этих слов следует слово «стоп».


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

ДА или НЕТ


Пример 1

Ввод Вывод

грот

вигвам

гаррота

стоп

ДА

Пример 2

Ввод Вывод

чаепитие

чашка

печенье

стоп

НЕТ

Пример 3

Ввод Вывод

чечевица

светопреставление

престол

стоп

ДА

Язык программирования - PYTON

Помогите!

Перейти к ответам

Ответы на вопрос

Отвечает Макашова Соня.

Для решения этой задачи нужно выполнить несколько шагов:

  1. Считываем все слова, пока не встретим слово "стоп".
  2. Находим самое короткое и самое длинное слово.
  3. Проверяем, содержатся ли все буквы из самого короткого слова в самом длинном. При этом важно, чтобы буквы из короткого слова встречались в длинном, но без учета повторений (то есть, их количество не важно).

Алгоритм:

  1. Читаем слова и сохраняем их до встречи с "стоп".
  2. Выбираем самое короткое и самое длинное слово из введённых.
  3. Составляем множества из букв этих слов (так как множества автоматически убирают повторяющиеся буквы).
  4. Проверяем, является ли множество букв короткого слова подмножеством множества букв длинного слова.
  5. Выводим "ДА", если условие выполнено, иначе "НЕТ".

Код:

python
# Чтение входных данных words = [] while True: word = input().strip() if word == "стоп": break words.append(word)

# Находим самое короткое и самое длинное слово shortest_word = min(words, key=len) longest_word = max(words, key=len)

# Преобразуем слова в множества символов shortest_set = set(shortest_word) longest_set = set(longest_word)

# Проверяем, все ли буквы из короткого слова есть в длинном if shortest_set.issubset(longest_set): print("ДА") else: print("НЕТ")

Пояснение:

  1. Чтение слов: Мы считываем все слова с помощью цикла while True, пока не встретим слово "стоп". Введённые слова сохраняются в список words.
  2. Поиск самого короткого и самого длинного слова: Для этого используем функции min() и max(), где key=len позволяет выбрать элемент с минимальной и максимальной длиной соответственно.
  3. Преобразование в множества: Мы создаем множества из букв слов. Множества автоматически удаляют повторяющиеся символы, что удобно для проверки наличия всех букв без учёта их повторений.
  4. Проверка подмножества: Функция issubset() проверяет, является ли множество символов из короткого слова подмножеством множества символов из длинного слова.
  5. Вывод результата: В зависимости от результата проверки выводим "ДА" или "НЕТ".

Пример 1:

Ввод:

гротвиг вамгаррот астоп

Вывод:

ДА

Пример 2:

Ввод:

чаепитие чашка печенье стоп

Вывод:

НЕТ

Пример 3:

Ввод:

чечевица свет опреставление престол стоп

Вывод:

ДА

Пояснение к примерам:

  1. В первом примере самое короткое слово — "гротвиг", а самое длинное — "вамгаррот". Все буквы из "гротвиг" (г, р, о, т, в, и) присутствуют в "вамгаррот".
  2. Во втором примере самое короткое слово — "чашка", а самое длинное — "печенье". Буквы из "чашка" (ч, а, ш, к) не все встречаются в "печенье", поэтому ответ "НЕТ".
  3. В третьем примере, несмотря на то что слова длинные и сложные, все буквы из "свет" (с, в, е, т) есть в слове "чечевица", поэтому ответ "ДА".

Важные моменты:

  • Мы используем множества для упрощения задачи проверки наличия букв без учёта их количества.
  • Решение эффективно работает для всех типов входных данных, где гарантируется, что длина слов различна.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос