Главный повар детского сада хочет приготовить в праздничный день блюда, которые ни разу не готовил на этой неделе.
В его распоряжении есть список блюд:
- которые можно приготовить в столовой сегодня;
- которые были приготовлены в каждый из дней недели.
Формат ввода
Число блюд (N), которые можно приготовить в столовой.
N строк с названиями блюд. Число дней (M), о которых имеется информация.
M блоков строк для каждого из списков. В первой строке каждого блока записано число блюд в заданный день, затем перечисляются эти блюда.
Формат вывода:
Список блюд, которые ещё не готовились на этой неделе в алфавитном порядке.
Если все возможные блюда уже были приготовлены, следует вывести «Готовить нечего».
Пример
Ввод
5
Овсянка
Рис
Суп
Манная каша
Рыба
2
3
Рис
Суп
Рыба
2
Рис
РыбаВывод
Манная каша
ОвсянкаРешение
На примере этой задачи рассмотрим решение, которое не сохраняет изначальные данные.
Сначала создаем множество каш. После чего с помощью вложенных чисел принимаем ранее приготовленные каши и удаляем их из множества.
С помощью функции sorted() копируем с одновременной сортировкой множество оставшихся каш в список.
Если список получился не пустой, выводим его элементы по одному на строку, если список пуст — пишем, что готовить нечего.
Посмотреть код
Решение
porridges = set()
for _ in range(int(input())):
if (porridge := input()) not in porridges:
porridges.add(porridge)
for _ in range(int(input())):
for _ in range(int(input())):
if (porridge := input()) in porridges:
porridges.remove(porridge)
menu = sorted(porridges)
if not menu:
print('Готовить нечего')
else:
for porridge in menu:
print(porridge)
Опять 25… Чекер Яндекса выдаёт ошибку «WA» на 14 тесте, как понять что ему не нравиться в моем решении этой задачи?). Как-то Яндексы не позаботились об этом.
dishes_list = set() dishes_list_day = set() for number_dishes in range(int(input())): dishes_list.add(input()) for days in range(int(input())): for number_dishes_day in range(int(input())): dishes_list_day.add(input()) difference = dishes_list ^ dishes_list_day if difference: for dish in sorted(difference): print(dish) else: print('Таких нет')тут пробдлема в том, что вместо
difference = dishes_list — dishes_list_day
вы используете
difference = dishes_list ^ dishes_list_day
первое дает только блюда котороые ранее не готовились и которые можно приготовить сегодня,
а второе либо блюда которые ранее не готовились и которые можно приготовить сегодня, либо те что готовились раньше, и их нельзя приготовить сегодня.
А еще надо написать Готовить нечего вместо Таких нет
О! Спасибо за замечание и вашу внимательность. Я лишь исправил print(‘Готовить нечего’) и чекер принял ответ). С этим я согласен «difference = dishes_list — dishes_list_day» — это правильная запись, но чекер не идеальный и принял этот вариант тоже «difference = dishes_list ^ dishes_list_day».