Menu
CoddyTech

União e interseção

Parte da seção Lógica e fluxo do Journey de GDScript da Coddy. Lição 34 de 78.

Dois conjuntos podem ser combinados de duas maneiras comuns:

  • A união contém todos os elementos que estão em qualquer um dos conjuntos.
  • A interseção contém apenas os elementos que estão em ambos os conjuntos.

GDScript não tem operadores para isso, então você os implementa com loops. Para a união, adicione os membros dos dois conjuntos a um novo conjunto. Um membro presente nos dois conjuntos fica na mesma chave:

var mia := {"forest": true, "cave": true}
var leo := {"cave": true, "tower": true}
var either := {}
for place in mia:
	either[place] = true
for place in leo:
	either[place] = true
print(either.keys()) # ["forest", "cave", "tower"]

Como todos os valores são true, merged() retorna a mesma união em uma única chamada: var either := mia.merged(leo). Ele retorna um novo dicionário e mantém mia inalterado.

Para obter a interseção, percorra um conjunto e mantenha os elementos que o outro conjunto contém:

var both := {}
for place in mia:
	if leo.has(place):
		both[place] = true
print(both.keys()) # ["cave"]

Quando os conjuntos não têm elementos em comum, a interseção é vazia e both.keys() é [].

challenge icon

Desafio

Fácil

Dois jogadores desbloquearam algumas habilidades. O programa lê duas linhas, as habilidades do primeiro jogador e do segundo jogador, separadas por espaços, e o código inicial cria os conjuntos first e second.

Imprima a união e a interseção dos dois conjuntos, com os elementos separados por , :

  • All skills: seguido da união: as habilidades do primeiro jogador e, em seguida, as novas habilidades do segundo jogador
  • Shared skills: seguido da interseção, na ordem do primeiro jogador, ou none quando eles não compartilham nenhuma habilidade

Para a entrada:

jump dash
dash swim

a saída é:

All skills: jump, dash, swim
Shared skills: dash

Experimente você mesmo

extends Node

func _ready():
	var first := {}
	for skill in OS.read_string_from_stdin().split(" ", false):
		first[skill] = true
	var second := {}
	for skill in OS.read_string_from_stdin().split(" ", false):
		second[skill] = true

	# Construa a união e a interseção

	# Imprima os resultados
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e fluxo

Pratique por conta própria: Compilador de GDScript online