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.

challenge icon

Défi

Facile

Créez un système d’enregistrement des noms d’utilisateur qui empêche les doublons en utilisant l’idiome des ensembles de Go. Ce défi montre comment créer un système robuste de gestion des utilisateurs qui garantit l’unicité des noms d’utilisateur pour toutes les inscriptions.

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 tentatives d’inscription de nouveaux 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 à l’aide de 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 sur les virgules afin d’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 sur les virgules afin d’obtenir les nouvelles tentatives d’inscription
  5. Pour chaque tentative d’inscription, vérifier si le nom d’utilisateur existe déjà dans l’ensemble en utilisant l’idiome comma ok
  6. Afficher le processus d’inscription 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’inscription, afficher un récapitulatif 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 distincte : "@[username]"

Utilisez le package strings pour diviser les chaînes d’entrée sur les virgules. Ce défi montre comment l’idiome des ensembles de Go offre une solution efficace pour empêcher les doublons dans les systèmes d’inscription des utilisateurs, en 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

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