Pengumpul Item Unik
Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 68 dari 68.
Tantangan
MudahBuat 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:
- Buat fungsi bernama
getUniqueItemsyang menerima slice string dan mengembalikan slice baru yang hanya berisi string unik - Di dalam fungsi ini, gunakan idiom
map[string]struct{}untuk melacak item yang sudah ditemui - 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
- Uraikan input pertama dengan memisahkan berdasarkan koma untuk mendapatkan list item awal
- Uraikan input kedua dengan memisahkan berdasarkan koma untuk mendapatkan item tambahan
- Tampilkan header sistem:
"=== UNIQUE ITEM COLLECTOR ===" - Tampilkan item asli:
"Original items: [comma-separated list of all original items]" - Tampilkan item tambahan:
"Additional items: [comma-separated list of all additional items]" - Gunakan fungsi
getUniqueItemsuntuk mendapatkan item unik dari list asli - Tampilkan item asli yang unik:
"Unique original items: [comma-separated list of unique items from original list]" - Gabungkan kedua slice input menjadi satu slice yang berisi semua item
- Gunakan fungsi
getUniqueItemsuntuk mendapatkan item unik dari list gabungan - Tampilkan item unik akhir:
"Final unique items: [comma-separated list of all unique items]" - 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]"
- 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
1Alur Kontrol Lanjutan
switch dengan `fallthrough`Keluar dari Perulangan BersarangMelanjutkan Perulangan TertentuPernyataan `goto`Rangkuman, Kontrol Perulangan Lanjutan4Proyek: Daftar Tugas Sederhana
Menyiapkan ProyekMenambahkan Tugas2Struct dan Method
Mendefinisikan Method pada StructPenerima NilaiPenerima PointerMemilih PenerimaMethod vs FungsiRekap: Perilaku Struct5Map secara Mendalam
Map Berisi StructPointer sebagai Nilai MapMenguji Map NilMembandingkan MapRingkasan: Penghitung Frekuensi Kata8Proyek: Inventaris Sederhana
Gambaran Umum ProyekMemeriksa Stok3Interface (Dasar)
Apa Itu Interface?Mendefinisikan InterfaceMengimplementasikan InterfaceMenggunakan Tipe InterfaceInterface KosongType AssertionType SwitchRingkasan: Bentuk dan PerilakuLatihan sendiri: Compiler Go online