Menu
Coddy logo textTech

Bir Küme Oluşturma

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

Go'nun set deyiminin arkasındaki kavramı anladığınıza göre, ilk setinizi oluşturarak bunu uygulamaya koymanın zamanı geldi. Süreç oldukça basittir ve map'lerle zaten öğrenmiş olduğunuz aynı kalıpları izler.

Go'da bir küme (set) oluşturmak için, map[T]struct{} desenini kullanarak bir değişken tanımlarsınız; burada T, saklamak istediğiniz öğelerin türüdür. Benzersiz renk adlarını saklamak için bir kümeyi şu şekilde oluşturabilirsiniz:

colors := make(map[string]struct{})

Ayrıca map literal sözdizimini kullanarak bir set'i bazı başlangıç değerleriyle başlatabilirsiniz.

colors := map[string]struct{}{
    "red":   {},
    "blue":  {},
    "green": {},
}

Her değerin boş bir yapı sabiti {} olduğuna dikkat edin. Bu, bellekte yer kaplamazken anahtarın haritada var olmasına yine de olanak tanıyan struct{} yapısının sıfır değerini oluşturur.

Bu yaklaşımın güzelliği, Go'nun mevcut map altyapısından yararlanırken gerçek set semantiği sağlamasıdır; her renk adı yalnızca bir kez görünebilir ve tıpkı normal map'lerde olduğu gibi hızlı arama süreleri elde edersiniz.

challenge icon

Görev

Kolay

Bir programlama dili tercih takipçisi oluşturun; bu takipçi, benzersiz öğeleri depolamak için Go küme deyimini gösterir. Bu görev, programlama dillerini yinelenenler olmadan takip etmek için map[string]struct{} deseninin nasıl kullanılacağını gösterir.

İki girdi alacaksınız:

  • İşlenecek dil sayısını temsil eden bir dize (örneğin, "6")
  • Virgüllerle ayrılmış programlama dillerini içeren bir dize (örneğin, "Go,Python,JavaScript,Go,Java,Python,C++,JavaScript")

Göreviniz:

  1. Benzersiz programlama dillerini depolamak için Go deyimi olan map[string]struct{} kullanarak bir küme oluşturmak
  2. Tek tek dil adlarını elde etmek için girdi dizesini virgüllerden bölerek ayrıştırmak
  3. Boş yapı değişmezi {} değerini kullanarak her dili kümenize eklemek
  4. Her dil karşılaşıldığında yazdırarak işleme sonuçlarını görüntülemek:
    • Dil kümede yeniyse: "Added: [language]"
    • Dil kümede zaten varsa: "Already exists: [language]"
  5. Tüm dilleri işledikten sonra bir özet görüntülemek:
    • "Total languages processed: [total_count]"
    • "Unique languages: [unique_count]"
  6. Son olarak kümedeki tüm benzersiz dilleri listelemek:
    • Başlık: "Programming languages in set:"
    • Her dil ayrı bir satırda: "- [language]"

Girdi dizesini bölmek için strings paketini, sayı dizesini bir tamsayıya dönüştürmek için strconv paketini kullanın. Bir dili eklemeden önce kümede zaten var olup olmadığını kontrol etmek için virgül ok deyimini kullanın: _, exists := languageSet[language]. Bu görev, Go küme deyiminin benzersiz öğeleri takip etmek ve verilerinizdeki yinelemeleri önlemek için nasıl verimli bir yol sağladığını gösterir.

Kendin dene

package main

import (
	"fmt"
	"sort"
	"strconv"
	"strings"
)

func main() {
	// Girdiyi oku
	var countStr string
	var languagesStr string
	fmt.Scanln(&countStr)
	fmt.Scanln(&languagesStr)
	
	// Sayı dizesini tam sayıya dönüştür (bu görev için gerekli değil)
	_, _ = strconv.Atoi(countStr)
	
	// Dilleri virgüllere göre ayır
	languages := strings.Split(languagesStr, ",")
	
	// map[string]struct{} deyimini kullanarak bir küme (set) oluştur
	languageSet := make(map[string]struct{})
	
	// TODO: Kodunuzu aşağıya yazın
	// Her bir dili işle ve kümede olup olmadığını kontrol et
	// comma ok deyimini kullan: _, exists := languageSet[language]
	// "Added: [language]" veya "Already exists: [language]" yazdır
	// Boş struct literal {} kullanarak dilleri kümeye ekle
	
	// Özet bilgileri yazdır
	// İşlenen toplam dil sayısını ve benzersiz dil sayısını yazdır
	
	// Kümedeki tüm benzersiz dilleri yazdır
	fmt.Println("Programming languages in set:")
	// Tutarlı çıktı için map'i slice'a dönüştürün ve sıralayın
	// Her bir dili "- [language]" formatıyla listeleyin
}
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 Go derleyicisi