Menu
Coddy logo textTech

Resumen: Nombres de usuario únicos

Parte de la sección Lógica y Flujo del Journey de GO de Coddy. Lección 37 de 68.

challenge icon

Desafío

Fácil

Construye un sistema de registro de nombres de usuario que evite los nombres de usuario duplicados mediante el modismo de conjuntos de Go. Este desafío demuestra cómo crear un sistema sólido de gestión de usuarios que garantice la unicidad de los nombres de usuario en todos los registros.

Recibirás dos entradas:

  • Una cadena que contiene nombres de usuario existentes separados por comas (por ejemplo, "alice123,bob_dev,charlie2024,diana_codes")
  • Una cadena que contiene intentos de registro de nuevos nombres de usuario separados por comas (por ejemplo, "eve_user,alice123,frank_dev,bob_dev,grace2024,alice123")

Tu tarea es:

  1. Crear un conjunto utilizando el modismo de Go map[string]struct{} para almacenar los nombres de usuario registrados
  2. Analizar la primera cadena de entrada dividiéndola por comas para obtener los nombres de usuario existentes
  3. Añadir cada nombre de usuario existente a tu conjunto utilizando el literal de estructura vacía {} como valor
  4. Analizar la segunda cadena de entrada dividiéndola por comas para obtener los nuevos intentos de registro
  5. Para cada intento de registro, comprobar si el nombre de usuario ya existe en el conjunto utilizando el modismo de coma ok
  6. Mostrar el proceso de registro para cada intento:
    • Si el nombre de usuario está disponible: "Registered: [username]" y añadirlo al conjunto
    • Si el nombre de usuario ya existe: "Username taken: [username]"
  7. Después de procesar todos los intentos de registro, mostrar un resumen 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. Por último, enumerar todos los nombres de usuario registrados en el sistema:
    • Encabezado: "All registered usernames:"
    • Cada nombre de usuario en una línea separada: "@[username]"

Usa el paquete strings para dividir las cadenas de entrada por comas. Este desafío demuestra cómo el modismo de conjuntos de Go proporciona una solución eficiente para evitar duplicados en los sistemas de registro de usuarios, garantizando la integridad de los datos y ofreciendo un rendimiento rápido en las búsquedas para validar nombres de usuario.

Pruébalo tú mismo

package main

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

func main() {
	// Leer entrada
	var existingUsernames string
	var newRegistrations string
	fmt.Scanln(&existingUsernames)
	fmt.Scanln(&newRegistrations)
	
	// Analizar cadenas de entrada
	existing := strings.Split(existingUsernames, ",")
	attempts := strings.Split(newRegistrations, ",")
	
	// Crear conjunto usando el modismo de Go
	userSet := make(map[string]struct{})
	
	// TODO: Escribe tu código a continuación
	// 1. Agregar nombres de usuario existentes al conjunto
	// 2. Procesar cada intento de registro
	// 3. Mostrar los resultados de registro para cada intento
	// 4. Calcular y mostrar el resumen
	// 5. Listar todos los nombres de usuario registrados (recuerda ordenar para una salida consistente)
	
}

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de Go online