Menu
CoddyTech

Pengumpul Item Unik

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

challenge icon

Tantangan

Mudah

Buat sistem penghapusan duplikat yang menggunakan pola set idiomatis Go untuk menyaring item unik dari kumpulan string. Tantangan ini akan menguji kemampuanmu menggunakan idiom map[string]struct{} untuk melacak item yang sudah ditemui dan membuat kumpulan yang hanya berisi elemen unik.

Kamu akan menerima dua input:

  • String yang berisi item-item yang dipisahkan koma (misalnya, "apple,banana,apple,orange,banana,grape,apple")
  • String yang berisi item tambahan untuk digabungkan, juga dipisahkan koma (misalnya, "kiwi,apple,mango,banana,kiwi")

Tugasmu adalah:

  1. Buat fungsi bernama getUniqueItems yang menerima slice string dan mengembalikan slice baru yang hanya berisi string unik
  2. Di dalam fungsi ini, gunakan idiom map[string]struct{} untuk melacak item yang sudah ditemui
  3. Iterasi melalui slice input dan untuk setiap item:
    • Periksa apakah item tersebut ada di set-mu menggunakan idiom comma ok
    • Jika item tersebut belum pernah ditemui, tambahkan ke set dan slice hasil
  4. Uraikan input pertama dengan memisahkan berdasarkan koma untuk mendapatkan list item awal
  5. Uraikan input kedua dengan memisahkan berdasarkan koma untuk mendapatkan item tambahan
  6. Tampilkan header sistem: "=== UNIQUE ITEM COLLECTOR ==="
  7. Tampilkan item asli: "Original items: [comma-separated list of all original items]"
  8. Tampilkan item tambahan: "Additional items: [comma-separated list of all additional items]"
  9. Gunakan fungsi getUniqueItems untuk mendapatkan item unik dari list asli
  10. Tampilkan item asli yang unik: "Unique original items: [comma-separated list of unique items from original list]"
  11. Gabungkan kedua slice input menjadi satu slice yang berisi semua item
  12. Gunakan fungsi getUniqueItems untuk mendapatkan item unik dari list gabungan
  13. Tampilkan item unik akhir: "Final unique items: [comma-separated list of all unique items]"
  14. Tampilkan statistik kumpulan:
    • "=== COLLECTION STATISTICS ==="
    • "Total original items: [count of original items]"
    • "Total additional items: [count of additional items]"
    • "Total combined items: [count of all items combined]"
    • "Unique items found: [count of unique items]"
    • "Duplicates removed: [total combined items minus unique items]"
  15. Tampilkan pesan penyelesaian: "Unique item collection completed successfully"

Gunakan package strings untuk memisahkan string input dan package fmt untuk output. Saat menggabungkan item untuk ditampilkan, gunakan strings.Join dengan koma sebagai pemisah. Tantangan ini menunjukkan cara idiom set Go menyelesaikan masalah umum penghapusan duplikat dari kumpulan secara efisien. Kamu akan sering menggunakan pola ini dalam aplikasi pemrosesan data.

Coba sendiri

package main

import (
	"fmt"
	"strings"
)

func main() {
	// Baca input
	var input1 string
	var input2 string
	fmt.Scanln(&input1)
	fmt.Scanln(&input2)
	
	// Uraikan string input menjadi slice
	originalItems := strings.Split(input1, ",")
	additionalItems := strings.Split(input2, ",")
	
	// TODO: Tulis kodemu di sini
	// 1. Buat fungsi getUniqueItems yang menggunakan idiom map[string]struct{}
	// 2. Olah item asli untuk mendapatkan item unik
	// 3. Gabungkan kedua slice dan dapatkan item unik dari list gabungan
	// 4. Hitung statistik
	
	// Tampilkan header sistem
	fmt.Println("=== UNIQUE ITEM COLLECTOR ===")
	
	// Tampilkan item asli dan item tambahan
	fmt.Printf("Original items: %s\n", strings.Join(originalItems, ","))
	fmt.Printf("Additional items: %s\n", strings.Join(additionalItems, ","))
	
	// TODO: Tampilkan item asli yang unik, item unik akhir, dan statistik
	// Gunakan fmt.Printf dan strings.Join untuk memformat output
}

Semua pelajaran di Logika & Alur

Latihan sendiri: Compiler Go online