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 des doublons qui utilise le modèle idiomatique d’ensemble de Go pour filtrer les éléments uniques de collections de chaînes. Ce défi mettra à l’épreuve votre capacité à utiliser l’idiome map[string]struct{} pour suivre les éléments déjà rencontrés et créer des collections contenant uniquement 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 accepte une tranche de chaînes 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 les éléments déjà rencontrés
  3. Parcourir la tranche d’entrée et, pour chaque élément :
    • Vérifier si l’élément existe dans votre ensemble à l’aide de l’idiome « comma ok »
    • Si l’élément n’a pas encore été rencontré, l’ajouter à la fois à l’ensemble et à la tranche de résultats
  4. Analyser la première entrée en la scindant sur les virgules afin d’obtenir la liste initiale d’éléments
  5. Analyser la deuxième entrée en la scindant sur les virgules afin d’obtenir les éléments supplémentaires
  6. Afficher l’en-tête du système : "=== UNIQUE ITEM COLLECTOR ==="
  7. Afficher les éléments d’origine : "Original items: [comma-separated list of all original items]"
  8. Afficher les éléments supplémentaires : "Additional items: [comma-separated list of all additional items]"
  9. Utiliser votre fonction getUniqueItems pour obtenir les éléments uniques de la liste d’origine
  10. Afficher les éléments uniques d’origine : "Unique original items: [comma-separated list of unique items from original list]"
  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 finaux uniques : "Final unique items: [comma-separated list of all unique items]"
  14. Afficher les statistiques de la collection :
    • "=== 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. Afficher le message de fin : "Unique item collection completed successfully"

Utilisez le package strings pour scinder les chaînes d’entrée et le package fmt pour l’affichage. Lors de la concaténation des éléments pour l’affichage, utilisez strings.Join avec une virgule comme séparateur. Ce défi montre comment l’idiome des ensembles de Go permet de résoudre efficacement le problème courant de suppression des doublons dans les collections, un modèle que vous utiliserez fréquemment dans les applications de traitement des 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

Entraînez-vous par vous-même : Compilateur Go en ligne