Menu
Coddy logo textTech

Raccolta di elementi unici

Fa parte della sezione Logica e flusso del percorso GO di Coddy. Lezione 68 di 68.

challenge icon

Sfida

Facile

Crea un sistema di rimozione dei duplicati che utilizzi l'idioma set di Go per filtrare gli elementi unici da raccolte di stringhe. Questa sfida metterà alla prova la tua capacità di usare l'idioma map[string]struct{} per tenere traccia degli elementi già incontrati e creare raccolte contenenti solo elementi unici.

Riceverai due input:

  • Una stringa contenente elementi separati da virgole (ad es., "apple,banana,apple,orange,banana,grape,apple")
  • Una stringa contenente elementi aggiuntivi da unire, anch'essi separati da virgole (ad es., "kiwi,apple,mango,banana,kiwi")

Il tuo compito è:

  1. Creare una funzione chiamata getUniqueItems che accetta uno slice di stringhe e restituisce un nuovo slice contenente solo le stringhe uniche
  2. All'interno di questa funzione, usare l'idioma map[string]struct{} per tenere traccia degli elementi già incontrati
  3. Iterare attraverso lo slice di input e, per ogni elemento:
    • Verificare se l'elemento esiste nel tuo set usando l'idioma comma ok
    • Se l'elemento non è già stato incontrato, aggiungerlo sia al set che allo slice dei risultati
  4. Analizzare il primo input suddividendolo in corrispondenza delle virgole per ottenere l'elenco iniziale di elementi
  5. Analizzare il secondo input suddividendolo in corrispondenza delle virgole per ottenere gli elementi aggiuntivi
  6. Visualizzare l'intestazione del sistema: "=== UNIQUE ITEM COLLECTOR ==="
  7. Visualizzare gli elementi originali: "Original items: [comma-separated list of all original items]"
  8. Visualizzare gli elementi aggiuntivi: "Additional items: [comma-separated list of all additional items]"
  9. Usare la funzione getUniqueItems per ottenere gli elementi unici dall'elenco originale
  10. Visualizzare gli elementi originali unici: "Unique original items: [comma-separated list of unique items from original list]"
  11. Unire entrambi gli slice di input in un unico slice contenente tutti gli elementi
  12. Usare la funzione getUniqueItems per ottenere gli elementi unici dall'elenco unito
  13. Visualizzare gli elementi unici finali: "Final unique items: [comma-separated list of all unique items]"
  14. Visualizzare le statistiche della raccolta:
    • "=== 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. Visualizzare il messaggio di completamento: "Unique item collection completed successfully"

Usa il package strings per suddividere le stringhe di input e il package fmt per l'output. Quando unisci gli elementi da visualizzare, usa strings.Join con una virgola come separatore. Questa sfida dimostra come l'idioma set di Go risolva in modo efficiente il problema comune della rimozione dei duplicati dalle raccolte, uno schema che userai spesso nelle applicazioni di elaborazione dei dati.

Provalo tu

package main

import (
	"fmt"
	"strings"
)

func main() {
	// Leggi l'input
	var input1 string
	var input2 string
	fmt.Scanln(&input1)
	fmt.Scanln(&input2)
	
	// Suddividi le stringhe di input in slice
	originalItems := strings.Split(input1, ",")
	additionalItems := strings.Split(input2, ",")
	
	// TODO: Scrivi qui il tuo codice
	// 1. Crea la funzione getUniqueItems usando l'idioma map[string]struct{}
	// 2. Elabora gli elementi originali per ottenere quelli univoci
	// 3. Combina le due slice e ottieni gli elementi univoci dall'elenco risultante
	// 4. Calcola le statistiche
	
	// Visualizza l'intestazione del sistema
	fmt.Println("=== UNIQUE ITEM COLLECTOR ===")
	
	// Visualizza gli elementi originali e quelli aggiuntivi
	fmt.Printf("Original items: %s\n", strings.Join(originalItems, ","))
	fmt.Printf("Additional items: %s\n", strings.Join(additionalItems, ","))
	
	// TODO: Visualizza gli elementi originali univoci, gli elementi univoci finali e le statistiche
	// Usa fmt.Printf e strings.Join per formattare l'output
}

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Go online