Menu
Coddy logo textTech

Collecteur d'éléments uniques

Fait partie de la section Logique & Flux du Journey GO de Coddy — leçon 68 sur 68.

challenge icon

Défi

Facile

Créez un système de suppression de doublons qui utilise le motif d'ensemble idiomatique de Go pour filtrer les éléments uniques à partir de collections de chaînes de caractères. Ce défi testera votre capacité à utiliser l'idiome map[string]struct{} pour suivre les éléments déjà vus et construire des collections ne contenant que des éléments uniques.

Vous recevrez deux entrées :

  • Une chaîne contenant des éléments séparés par des virgules (par exemple, "apple,banana,apple,orange,banana,grape,apple")
  • Une chaîne contenant des éléments supplémentaires à fusionner, également séparés par des virgules (par exemple, "kiwi,apple,mango,banana,kiwi")

Votre tâche consiste à :

  1. Créer une fonction appelée getUniqueItems qui prend une tranche (slice) de chaînes de caractères et renvoie une nouvelle tranche contenant uniquement les chaînes uniques
  2. À l'intérieur de cette fonction, utiliser l'idiome map[string]struct{} pour suivre quels éléments ont été vus
  3. Parcourir la tranche d'entrée et pour chaque élément :
    • Vérifier si l'élément existe dans votre ensemble en utilisant l'idiome "comma ok"
    • Si l'élément n'a pas été vu auparavant, l'ajouter à la fois à l'ensemble et à la tranche de résultat
  4. Analyser la première entrée en la découpant au niveau des virgules pour obtenir la liste d'éléments initiale
  5. Analyser la deuxième entrée en la découpant au niveau des virgules pour obtenir les éléments supplémentaires
  6. Afficher l'en-tête du système : "=== UNIQUE ITEM COLLECTOR ==="
  7. Afficher les éléments originaux : "Original items: [liste de tous les éléments originaux séparés par des virgules]"
  8. Afficher les éléments supplémentaires : "Additional items: [liste de tous les éléments supplémentaires séparés par des virgules]"
  9. Utiliser votre fonction getUniqueItems pour obtenir les éléments uniques de la liste originale
  10. Afficher les éléments originaux uniques : "Unique original items: [liste des éléments uniques de la liste originale séparés par des virgules]"
  11. Combiner les deux tranches d'entrée en une seule tranche contenant tous les éléments
  12. Utiliser votre fonction getUniqueItems pour obtenir les éléments uniques de la liste combinée
  13. Afficher les éléments uniques finaux : "Final unique items: [liste de tous les éléments uniques séparés par des virgules]"
  14. Afficher les statistiques de la collection :
    • "=== COLLECTION STATISTICS ==="
    • "Total original items: [nombre d'éléments originaux]"
    • "Total additional items: [nombre d'éléments supplémentaires]"
    • "Total combined items: [nombre de tous les éléments combinés]"
    • "Unique items found: [nombre d'éléments uniques]"
    • "Duplicates removed: [total des éléments combinés moins les éléments uniques]"
  15. Afficher le message de fin : "Unique item collection completed successfully"

Utilisez le package strings pour découper les chaînes d'entrée et le package fmt pour la sortie. Lors de la jointure des éléments pour l'affichage, utilisez strings.Join avec une virgule comme séparateur. Ce défi démontre comment l'idiome d'ensemble de Go résout efficacement le problème courant de la suppression des doublons dans les collections, un motif que vous utiliserez fréquemment dans les applications de traitement de données.

Essayez vous-même

package main

import (
	"fmt"
	"strings"
)

func main() {
	// Lire l'entrée
	var input1 string
	var input2 string
	fmt.Scanln(&input1)
	fmt.Scanln(&input2)
	
	// Analyser les chaînes d'entrée en tranches (slices)
	originalItems := strings.Split(input1, ",")
	additionalItems := strings.Split(input2, ",")
	
	// TODO: Écrivez votre code ici
	// 1. Créer la fonction getUniqueItems qui utilise l'idiome map[string]struct{}
	// 2. Traiter les éléments originaux pour obtenir les éléments uniques
	// 3. Combiner les deux tranches et obtenir les éléments uniques de la liste combinée
	// 4. Calculer les statistiques
	
	// Afficher l'en-tête du système
	fmt.Println("=== UNIQUE ITEM COLLECTOR ===")
	
	// Afficher les éléments originaux et supplémentaires
	fmt.Printf("Original items: %s\n", strings.Join(originalItems, ","))
	fmt.Printf("Additional items: %s\n", strings.Join(additionalItems, ","))
	
	// TODO: Afficher les éléments originaux uniques, les éléments uniques finaux et les statistiques
	// Utiliser fmt.Printf et strings.Join pour le formatage de la sortie
}

Toutes les leçons de Logique & Flux