Menu
Coddy logo textTech

Özet - Benzersiz Kullanıcı Adları

Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 37 / 68.

challenge icon

Görev

Kolay

Go set deyimini kullanarak yinelenen kullanıcı adlarını önleyen bir kullanıcı adı kayıt sistemi oluşturun. Bu görev, tüm kayıtlar genelinde kullanıcı adlarının benzersiz olmasını sağlayan sağlam bir kullanıcı yönetim sisteminin nasıl oluşturulacağını gösterir.

İki girdi alacaksınız:

  • Virgüllerle ayrılmış mevcut kullanıcı adlarını içeren bir dize (ör. "alice123,bob_dev,charlie2024,diana_codes")
  • Virgüllerle ayrılmış yeni kullanıcı adı kayıt denemelerini içeren bir dize (ör. "eve_user,alice123,frank_dev,bob_dev,grace2024,alice123")

Göreviniz:

  1. Kayıtlı kullanıcı adlarını depolamak için Go deyimi map[string]struct{} kullanarak bir küme oluşturun
  2. Mevcut kullanıcı adlarını elde etmek için ilk girdi dizesini virgüller üzerinden bölerek ayrıştırın
  3. Her mevcut kullanıcı adını, değer olarak boş struct literal'ı {} kullanarak kümenize ekleyin
  4. Yeni kayıt denemelerini elde etmek için ikinci girdi dizesini virgüller üzerinden bölerek ayrıştırın
  5. Her kayıt denemesi için, virgül ok deyimini kullanarak kullanıcı adının kümede zaten var olup olmadığını kontrol edin
  6. Her deneme için kayıt sürecini görüntüleyin:
    • Kullanıcı adı kullanılabilir durumdaysa: "Registered: [username]" ve kullanıcı adını kümeye ekleyin
    • Kullanıcı adı zaten varsa: "Username taken: [username]"
  7. Tüm kayıt denemelerini işledikten sonra kapsamlı bir özet görüntüleyin:
    • "Registration Summary:"
    • "Initial usernames: [initial_count]"
    • "Registration attempts: [attempts_count]"
    • "Successful registrations: [successful_count]"
    • "Rejected (duplicate): [rejected_count]"
    • "Total registered usernames: [total_count]"
  8. Son olarak, sistemde kayıtlı tüm kullanıcı adlarını listeleyin:
    • Başlık: "All registered usernames:"
    • Her kullanıcı adını ayrı bir satırda gösterin: "@[username]"

Girdi dizelerini virgüller üzerinden bölmek için strings paketini kullanın. Bu görev, Go set deyiminin kullanıcı adı kayıt sistemlerinde yinelenenleri önlemek için nasıl verimli bir çözüm sağladığını; kullanıcı adı doğrulaması için hızlı arama performansı sunarken veri bütünlüğünü nasıl koruduğunu gösterir.

Kendin dene

package main

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

func main() {
	// Girdiyi oku
	var existingUsernames string
	var newRegistrations string
	fmt.Scanln(&existingUsernames)
	fmt.Scanln(&newRegistrations)
	
	// Girdi dizelerini ayrıştır
	existing := strings.Split(existingUsernames, ",")
	attempts := strings.Split(newRegistrations, ",")
	
	// Go deyimine uygun küme oluştur
	userSet := make(map[string]struct{})
	
	// TODO: Kodunuzu aşağıya yazın
	// 1. Mevcut kullanıcı adlarını kümeye ekleyin
	// 2. Her bir kayıt denemesini işleyin
	// 3. Her deneme için kayıt sonuçlarını görüntüleyin
	// 4. Özeti hesaplayın ve görüntüleyin
	// 5. Tüm kayıtlı kullanıcı adlarını listeleyin (tutarlı çıktı için sıralamayı unutmayın)
	
}

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Go derleyicisi