Разность множеств
Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 35 из 78.
Разность двух множеств содержит элементы первого множества, которых нет во втором. Перебери первое множество и оставь то, чего нет во втором:
var needed := {"rope": true, "torch": true, "map": true}
var packed := {"torch": true, "apple": true}
var missing := {}
for item in needed:
if not packed.has(item):
missing[item] = true
print(missing.keys()) # ["rope", "map"]Порядок множеств имеет значение. Разность packed и needed — это ["apple"]: то, что ты упаковал, но в чём не нуждался.
Эти два различия вместе образуют симметрическую разность: элементы, которые входят ровно в одно из множеств. Здесь это rope, map и apple.
Чтобы проверить, что ничего не пропущено, has_all() принимает массив и возвращает true, если каждый его элемент является ключом словаря:
print(packed.has_all(needed.keys())) # false: отсутствуют верёвка и картаЗадание
ЛегкоПеред поездкой ты сравниваешь то, что тебе нужно, с тем, что ты упаковал. Программа считывает две строки: необходимые вещи и упакованные вещи, разделённые пробелами, а начальный код создаёт множества needed и packed.
Выведи две строки, объединив элементы через , :
Missing:, а затем необходимые вещи, которые не упакованыExtra:, а затем упакованные вещи, которые не нужны
Сохрани порядок обхода множества. Вместо пустого списка выведи none. Для ввода:
rope torch map
torch appleвывод будет таким:
Missing: rope, map
Extra: appleПопробуйте сами
extends Node
func _ready():
var needed := {}
for item in OS.read_string_from_stdin().split(" ", false):
needed[item] = true
var packed := {}
for item in OS.read_string_from_stdin().split(" ", false):
packed[item] = true
# Сформируйте две разности
# Выведите результаты
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и потоки выполнения
1Строки: углублённое изучение
Методы строкПоиск в строкахЗамена и обрезка пробеловРазделение и объединениеПовторение — проверка имени пользователя4Словари. Часть 2
Вложенные словариМассивы словарейОбъединение словарейКопирование словарейПовторение — подсчёт частоты10Продвинутые функции
Возврат нескольких значенийЛямбда-функции. Часть 1Лямбда-функции. Часть 2Повторение — сортировка с помощью лямбда-функцииРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного массива13Система управления запасами
Обзор проектаДобавление товара2Продвинутое управление ветвлением
Сопоставление с переменнымиУсловия в шаблонахШаблоны массивовШаблоны словарейПроверка принадлежностиИтоги — парсер команд5Приложение «Телефонная книга»
Показать менюДобавить контакт8Менеджер успеваемости студентов
Обзор проектаДобавить студента3Многомерные массивы
Основы двумерных массивовДоступ к элементам двумерного массиваВложенные циклы с двумерными массивамиПовторение: двумерные массивыРваные массивыТипичные шаблоны работы с двумерными массивамиПовторение: игровое поле6Множества и словари
Что такое множество?Словарь как множествоДобавление и удалениеОбъединение и пересечениеРазность множествПовторение — удаление дубликатовПотренируйтесь самостоятельно: Онлайн-компилятор GDScript