Menu
CoddyTech

Разность множеств

Часть раздела Логика и потоки выполнения путешествия по 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: отсутствуют верёвка и карта
challenge icon

Задание

Легко

Перед поездкой ты сравниваешь то, что тебе нужно, с тем, что ты упаковал. Программа считывает две строки: необходимые вещи и упакованные вещи, разделённые пробелами, а начальный код создаёт множества 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

	# Сформируйте две разности

	# Выведите результаты
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и потоки выполнения

Потренируйтесь самостоятельно: Онлайн-компилятор GDScript