Menu
Coddy logo textTech

Sammler für eindeutige Elemente

Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy — Lektion 68 von 68.

challenge icon

Aufgabe

Einfach

Erstellen Sie ein System zur Duplikatentfernung, das das idiomatische Set-Muster von Go verwendet, um eindeutige Elemente aus Sammlungen von Strings zu filtern. Diese Herausforderung testet Ihre Fähigkeit, das Idiom map[string]struct{} zu verwenden, um bereits gesehene Elemente zu verfolgen und Sammlungen aufzubauen, die nur eindeutige Elemente enthalten.

Sie erhalten zwei Eingaben:

  • Einen String, der durch Kommas getrennte Elemente enthält (z. B. "apple,banana,apple,orange,banana,grape,apple")
  • Einen String, der zusätzliche zu verschmelzende Elemente enthält, ebenfalls durch Kommas getrennt (z. B. "kiwi,apple,mango,banana,kiwi")

Ihre Aufgabe ist es:

  1. Erstellen Sie eine Funktion namens getUniqueItems, die ein Slice von Strings entgegennimmt und ein neues Slice zurückgibt, das nur die eindeutigen Strings enthält
  2. Verwenden Sie innerhalb dieser Funktion das Idiom map[string]struct{}, um zu verfolgen, welche Elemente bereits gesehen wurden
  3. Iterieren Sie durch das Eingabe-Slice und für jedes Element:
    • Prüfen Sie mit dem "comma ok"-Idiom, ob das Element in Ihrem Set existiert
    • Wenn das Element noch nicht gesehen wurde, fügen Sie es sowohl dem Set als auch dem Ergebnis-Slice hinzu
  4. Verarbeiten Sie die erste Eingabe, indem Sie sie an den Kommas aufteilen, um die ursprüngliche Artikelliste zu erhalten
  5. Verarbeiten Sie die zweite Eingabe, indem Sie sie an den Kommas aufteilen, um die zusätzlichen Artikel zu erhalten
  6. Zeigen Sie den System-Header an: "=== UNIQUE ITEM COLLECTOR ==="
  7. Zeigen Sie die ursprünglichen Artikel an: "Original items: [comma-separated list of all original items]"
  8. Zeigen Sie die zusätzlichen Artikel an: "Additional items: [comma-separated list of all additional items]"
  9. Verwenden Sie Ihre Funktion getUniqueItems, um eindeutige Artikel aus der ursprünglichen Liste zu erhalten
  10. Zeigen Sie die eindeutigen ursprünglichen Artikel an: "Unique original items: [comma-separated list of unique items from original list]"
  11. Kombinieren Sie beide Eingabe-Slices zu einem einzigen Slice, das alle Artikel enthält
  12. Verwenden Sie Ihre Funktion getUniqueItems, um eindeutige Artikel aus der kombinierten Liste zu erhalten
  13. Zeigen Sie die finalen eindeutigen Artikel an: "Final unique items: [comma-separated list of all unique items]"
  14. Zeigen Sie die Sammlungsstatistiken an:
    • "=== COLLECTION STATISTICS ==="
    • "Total original items: [count of original items]"
    • "Total additional items: [count of additional items]"
    • "Total combined items: [count of all items combined]"
    • "Unique items found: [count of unique items]"
    • "Duplicates removed: [total combined items minus unique items]"
  15. Zeigen Sie die Abschlussmeldung an: "Unique item collection completed successfully"

Verwenden Sie das Paket strings, um Eingabestrings aufzuteilen, und das Paket fmt für die Ausgabe. Wenn Sie Elemente für die Anzeige zusammenfügen, verwenden Sie strings.Join mit einem Komma als Trennzeichen. Diese Herausforderung demonstriert, wie das Set-Idiom von Go das häufige Problem der Duplikatentfernung aus Sammlungen effizient löst – ein Muster, das Sie in Datenverarbeitungsanwendungen häufig verwenden werden.

Probier es selbst

package main

import (
	"fmt"
	"strings"
)

func main() {
	// Eingabe lesen
	var input1 string
	var input2 string
	fmt.Scanln(&input1)
	fmt.Scanln(&input2)
	
	// Eingabe-Strings in Slices parsen
	originalItems := strings.Split(input1, ",")
	additionalItems := strings.Split(input2, ",")
	
	// TODO: Schreiben Sie Ihren Code hier
	// 1. Erstellen Sie die Funktion getUniqueItems, die das Idiom map[string]struct{} verwendet
	// 2. Verarbeiten Sie die ursprünglichen Elemente, um eindeutige Elemente zu erhalten
	// 3. Kombinieren Sie beide Slices und erhalten Sie eindeutige Elemente aus der kombinierten Liste
	// 4. Statistiken berechnen
	
	// System-Header anzeigen
	fmt.Println("=== UNIQUE ITEM COLLECTOR ===")
	
	// Ursprüngliche und zusätzliche Elemente anzeigen
	fmt.Printf("Original items: %s\n", strings.Join(originalItems, ","))
	fmt.Printf("Additional items: %s\n", strings.Join(additionalItems, ","))
	
	// TODO: Eindeutige ursprüngliche Elemente, finale eindeutige Elemente und Statistiken anzeigen
	// Verwenden Sie fmt.Printf und strings.Join für die Ausgabeformatierung
}

Alle Lektionen in Logik & Ablauf