Menu
CoddyTech

Birleşim ve Kesişim

Coddy'nin GDScript Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 34 / 78.

İki küme, yaygın olarak iki şekilde birleştirilebilir:

  • Birleşim, kümelerden herhangi birinde bulunan tüm elemanları içerir.
  • Kesişim, yalnızca her iki kümede de bulunan elemanları içerir.

GDScript'te bunlar için operatör yoktur, bu yüzden bunları döngülerle oluşturursun. Birleşim için her iki kümenin elemanlarını yeni bir kümeye ekle. Her iki kümede bulunan bir eleman aynı anahtara denk gelir:

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"]

Her değer true olduğu için merged(), tek bir çağrıda aynı birleşimi verir: var either := mia.merged(leo). Yeni bir sözlük döndürür ve mia değişmeden kalır.

Kesişim için bir küme üzerinde döngü kur ve diğer kümenin de sahip olduğu üyeleri tut:

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

Kümelerin ortak elemanı olmadığında kesişim boştur ve both.keys() [] olur.

challenge icon

Görev

Kolay

İki oyuncunun her biri bazı becerilerin kilidini açtı. Program, ilk oyuncunun ve ikinci oyuncunun becerilerini içeren, boşluklarla ayrılmış iki satırı okur ve başlangıç kodu first ve second kümelerini oluşturur.

İki kümenin birleşimini ve kesişimini, elemanları , ile birleştirerek yazdır:

  • All skills: ifadesinin ardından birleşimi yazdır: ilk oyuncunun becerilerini, sonra ikinci oyuncunun yeni becerilerini
  • Shared skills: ifadesinin ardından kesişimi, ilk oyuncunun sırasına göre yazdır; ortak becerileri yoksa none yazdır

Şu girdi için:

jump dash
dash swim

çıktı şöyledir:

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

Kendin dene

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

	# Birleşimi ve kesişimi oluştur

	# Sonuçları yazdır
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online GDScript derleyicisi