Menu
Coddy logo textTech

Récapitulatif - Noms d'utilisateur uniques

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

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

challenge icon

Défi

Facile

Construisez un système d'enregistrement de noms d'utilisateur qui empêche les doublons en utilisant l'idiome des ensembles (set) en Go. Ce défi démontre comment créer un système de gestion d'utilisateurs robuste qui garantit l'unicité des noms d'utilisateur à travers tous les enregistrements.

Vous recevrez deux entrées :

  • Une chaîne contenant les noms d'utilisateur existants séparés par des virgules (par exemple, "alice123,bob_dev,charlie2024,diana_codes")
  • Une chaîne contenant les nouvelles tentatives d'enregistrement de noms d'utilisateur séparées par des virgules (par exemple, "eve_user,alice123,frank_dev,bob_dev,grace2024,alice123")

Votre tâche consiste à :

  1. Créer un ensemble en utilisant l'idiome Go map[string]struct{} pour stocker les noms d'utilisateur enregistrés
  2. Analyser la première chaîne d'entrée en la divisant au niveau des virgules pour obtenir les noms d'utilisateur existants
  3. Ajouter chaque nom d'utilisateur existant à votre ensemble en utilisant le littéral de structure vide {} comme valeur
  4. Analyser la deuxième chaîne d'entrée en la divisant au niveau des virgules pour obtenir les nouvelles tentatives d'enregistrement
  5. Pour chaque tentative d'enregistrement, vérifier si le nom d'utilisateur existe déjà dans l'ensemble en utilisant l'idiome comma ok
  6. Afficher le processus d'enregistrement pour chaque tentative :
    • Si le nom d'utilisateur est disponible : "Registered: [username]" et l'ajouter à l'ensemble
    • Si le nom d'utilisateur existe déjà : "Username taken: [username]"
  7. Après avoir traité toutes les tentatives d'enregistrement, afficher un résumé complet :
    • "Registration Summary:"
    • "Initial usernames: [initial_count]"
    • "Registration attempts: [attempts_count]"
    • "Successful registrations: [successful_count]"
    • "Rejected (duplicate): [rejected_count]"
    • "Total registered usernames: [total_count]"
  8. Enfin, lister tous les noms d'utilisateur enregistrés dans le système :
    • En-tête : "All registered usernames:"
    • Chaque nom d'utilisateur sur une ligne séparée : "@[username]"

Utilisez le package strings pour diviser les chaînes d'entrée au niveau des virgules. Ce défi démontre comment l'idiome des ensembles en Go fournit une solution efficace pour prévenir les doublons dans les systèmes d'enregistrement d'utilisateurs, garantissant l'intégrité des données tout en offrant des performances de recherche rapides pour la validation des noms d'utilisateur.

Essayez vous-même

package main

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

func main() {
	// Lire l'entrée
	var existingUsernames string
	var newRegistrations string
	fmt.Scanln(&existingUsernames)
	fmt.Scanln(&newRegistrations)
	
	// Analyser les chaînes d'entrée
	existing := strings.Split(existingUsernames, ",")
	attempts := strings.Split(newRegistrations, ",")
	
	// Créer un ensemble en utilisant l'idiome Go
	userSet := make(map[string]struct{})
	
	// TODO: Écrivez votre code ci-dessous
	// 1. Ajouter les noms d'utilisateur existants à l'ensemble
	// 2. Traiter chaque tentative d'inscription
	// 3. Afficher les résultats d'inscription pour chaque tentative
	// 4. Calculer et afficher le résumé
	// 5. Lister tous les noms d'utilisateur inscrits (n'oubliez pas de trier pour une sortie cohérente)
	
}

Toutes les leçons de Logique & Flux