Ctrl K

Что можно приготовить

Средняя
В поваренной книге len(dishes) блюд. Чтобы приготовить блюдо dishes[i], нужны все ингредиенты из списка needs[i]. Ингредиентом может быть и другое блюдо из книги — тогда его сначала надо приготовить. В кладовой pantry лежат базовые продукты, и каждого из них сколько угодно. Приготовленное блюдо тоже можно использовать сколько угодно раз. Верните все блюда, которые можно приготовить, в любом порядке. Учтите, что блюда могут требовать друг друга по кругу — такие приготовить нельзя.
Пример 1
dishes=['dough', 'pizza', 'soup'], needs=[['flour', 'water'], ['dough', 'cheese'], ['beet', 'water']], pantry=['water', 'flour', 'cheese'] → ['dough', 'pizza']

Тесто готовится из муки и воды, из теста и сыра — пицца. Для супа нет свёклы.

Пример 2
dishes=['jam', 'pie'], needs=[['pie'], ['jam', 'flour']], pantry=['flour', 'sugar'] → []

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

Пример 3
dishes=['tea'], needs=[['leaves', 'water']], pantry=['water', 'leaves', 'milk'] → ['tea']

Всё для чая есть в кладовой.

Ограничения
  • 1 ≤ len(dishes) = len(needs) ≤ 100
  • 1 ≤ len(needs[i]), len(pantry) ≤ 100
  • все названия — от 1 до 20 символов: строчные латинские буквы и _
  • названия блюд и продуктов из кладовой попарно различны
  • в каждом needs[i] нет повторов
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРаскрыть шаблон с переменными СредняяПорядок букв по словарю СложнаяПуть в дереве без одинаковых соседей СложнаяБуквы кратчайших покрытий СложнаяРазложить анаграммы по группам Средняя
загружаем Python…
Вход
dishes=['dough', 'pizza', 'soup'], needs=[['flour', 'water'], ['dough', 'cheese'], ['beet', 'water']], pantry=['water', 'flour', 'cheese']
Ожидается
['dough', 'pizza']

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 102 теста на сервере, включая скрытые.