Menu
CoddyTech

Ulasan: Nama pengguna unik

Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 37 dari 68.

challenge icon

Tantangan

Mudah

Buat sistem pendaftaran nama pengguna yang mencegah nama pengguna duplikat dengan idiom set Go. Tantangan ini menunjukkan cara membuat sistem pengelolaan pengguna yang tangguh dan memastikan keunikan nama pengguna pada semua pendaftaran.

Kamu akan menerima dua input:

  • Sebuah string yang berisi nama pengguna yang sudah ada, dipisahkan dengan koma (misalnya, "alice123,bob_dev,charlie2024,diana_codes")
  • Sebuah string yang berisi upaya pendaftaran nama pengguna baru, dipisahkan dengan koma (misalnya, "eve_user,alice123,frank_dev,bob_dev,grace2024,alice123")

Tugasmu adalah:

  1. Buat set menggunakan idiom Go map[string]struct{} untuk menyimpan nama pengguna yang terdaftar
  2. Urai string input pertama dengan memisahkannya berdasarkan koma untuk mendapatkan nama pengguna yang sudah ada
  3. Tambahkan setiap nama pengguna yang sudah ada ke set menggunakan literal struct kosong {} sebagai nilainya
  4. Urai string input kedua dengan memisahkannya berdasarkan koma untuk mendapatkan upaya pendaftaran baru
  5. Untuk setiap upaya pendaftaran, periksa apakah nama pengguna sudah ada di set menggunakan idiom comma ok
  6. Tampilkan proses pendaftaran untuk setiap upaya:
    • Jika nama pengguna tersedia: "Registered: [username]" dan tambahkan ke set
    • Jika nama pengguna sudah ada: "Username taken: [username]"
  7. Setelah memproses semua upaya pendaftaran, tampilkan ringkasan lengkap:
    • "Registration Summary:"
    • "Initial usernames: [initial_count]"
    • "Registration attempts: [attempts_count]"
    • "Successful registrations: [successful_count]"
    • "Rejected (duplicate): [rejected_count]"
    • "Total registered usernames: [total_count]"
  8. Terakhir, tampilkan daftar semua nama pengguna yang terdaftar di sistem:
    • Header: "All registered usernames:"
    • Setiap nama pengguna pada baris terpisah: "@[username]"

Gunakan package strings untuk memisahkan string input berdasarkan koma. Tantangan ini menunjukkan cara idiom set Go menyediakan solusi yang efisien untuk mencegah duplikat dalam sistem pendaftaran pengguna, menjaga integritas data sekaligus memberikan kinerja pencarian yang cepat untuk validasi nama pengguna.

Coba sendiri

package main

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

func main() {
	// Baca input
	var existingUsernames string
	var newRegistrations string
	fmt.Scanln(&existingUsernames)
	fmt.Scanln(&newRegistrations)
	
	// Uraikan string input
	existing := strings.Split(existingUsernames, ",")
	attempts := strings.Split(newRegistrations, ",")
	
	// Buat set dengan cara yang lazim di Go
	userSet := make(map[string]struct{})
	
	// TODO: Tulis kodemu di bawah ini
	// 1. Tambahkan nama pengguna yang sudah ada ke set
	// 2. Proses setiap percobaan pendaftaran
	// 3. Tampilkan hasil pendaftaran untuk setiap percobaan
	// 4. Hitung dan tampilkan ringkasannya
	// 5. Tampilkan semua nama pengguna yang terdaftar (ingat untuk mengurutkannya agar output konsisten)
	
}

Semua pelajaran di Logika & Alur

Latihan sendiri: Compiler Go online