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.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

challenge icon

Desafío

Fácil

Construye un sistema de registro de nombres de usuario que evite duplicados utilizando el modismo de conjuntos (set idiom) de Go. Este desafío demuestra cómo crear un sistema de gestión de usuarios robusto 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 nuevos intentos de registro de 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. Agregar 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, verificar si el nombre de usuario ya existe en el conjunto utilizando el modismo "comma ok"
  6. Mostrar el proceso de registro para cada intento:
    • Si el nombre de usuario está disponible: "Registered: [username]" y agregarlo 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. Finalmente, listar todos los nombres de usuario registrados en el sistema:
    • Encabezado: "All registered usernames:"
    • Cada nombre de usuario en una línea separada: "@[username]"

Utiliza 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 prevenir duplicados en los sistemas de registro de usuarios, garantizando la integridad de los datos y proporcionando un rendimiento de búsqueda rápido para la validación de 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