Menu
Coddy logo textTech

Riepilogo - Nomi utente univoci

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

challenge icon

Sfida

Facile

Crea un sistema di registrazione degli username che impedisca i duplicati usando l’idioma Go per i set. Questa sfida mostra come creare un sistema robusto di gestione degli utenti che garantisca l’unicità degli username in tutte le registrazioni.

Riceverai due input:

  • Una stringa contenente gli username esistenti separati da virgole (ad es., "alice123,bob_dev,charlie2024,diana_codes")
  • Una stringa contenente i tentativi di registrazione di nuovi username separati da virgole (ad es., "eve_user,alice123,frank_dev,bob_dev,grace2024,alice123")

Il tuo compito è:

  1. Creare un set usando l’idioma Go map[string]struct{} per memorizzare gli username registrati
  2. Analizzare la prima stringa di input dividendola in corrispondenza delle virgole per ottenere gli username esistenti
  3. Aggiungere ogni username esistente al set usando il valore struct vuoto {}
  4. Analizzare la seconda stringa di input dividendola in corrispondenza delle virgole per ottenere i nuovi tentativi di registrazione
  5. Per ogni tentativo di registrazione, verificare se lo username è già presente nel set usando l’idioma comma ok
  6. Mostrare il processo di registrazione per ogni tentativo:
    • Se lo username è disponibile: "Registered: [username]" e aggiungerlo al set
    • Se lo username esiste già: "Username taken: [username]"
  7. Dopo aver elaborato tutti i tentativi di registrazione, mostrare un riepilogo completo:
    • "Registration Summary:"
    • "Initial usernames: [initial_count]"
    • "Registration attempts: [attempts_count]"
    • "Successful registrations: [successful_count]"
    • "Rejected (duplicate): [rejected_count]"
    • "Total registered usernames: [total_count]"
  8. Infine, elencare tutti gli username registrati nel sistema:
    • Intestazione: "All registered usernames:"
    • Ogni username su una riga separata: "@[username]"

Usa il pacchetto strings per dividere le stringhe di input in corrispondenza delle virgole. Questa sfida mostra come l’idioma Go per i set offra una soluzione efficiente per impedire i duplicati nei sistemi di registrazione degli utenti, garantendo l’integrità dei dati e prestazioni rapide nelle ricerche per la convalida degli username.

Provalo tu

package main

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

func main() {
	// Leggi l'input
	var existingUsernames string
	var newRegistrations string
	fmt.Scanln(&existingUsernames)
	fmt.Scanln(&newRegistrations)
	
	// Analizza le stringhe di input
	existing := strings.Split(existingUsernames, ",")
	attempts := strings.Split(newRegistrations, ",")
	
	// Crea un insieme secondo la convenzione di Go
	userSet := make(map[string]struct{})
	
	// TODO: Scrivi il tuo codice qui sotto
	// 1. Aggiungi i nomi utente esistenti all'insieme
	// 2. Elabora ogni tentativo di registrazione
	// 3. Mostra il risultato di ogni tentativo di registrazione
	// 4. Calcola e mostra il riepilogo
	// 5. Elenca tutti i nomi utente registrati (ricorda di ordinarli per ottenere un output coerente)
	
}

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Go online