Menu
CoddyTech

Membuat set

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

Sekarang setelah kamu memahami konsep di balik idiom set Go, saatnya mempraktikkannya dengan membuat set pertamamu. Prosesnya sederhana dan mengikuti pola yang sudah kamu pelajari dengan map.

Untuk membuat set di Go, kamu mendeklarasikan variabel menggunakan pola map[T]struct{}, dengan T sebagai tipe elemen yang ingin kamu simpan. Berikut cara membuat set untuk menyimpan nama warna yang unik:

colors := make(map[string]struct{})

Kamu juga dapat menginisialisasi set dengan beberapa nilai awal menggunakan sintaks literal map:

colors := map[string]struct{}{
    "red":   {},
    "blue":  {},
    "green": {},
}

Perhatikan bahwa setiap nilai adalah literal struct kosong {}. Ini membuat nilai nol dari struct{}, yang tidak menggunakan ruang memori, tetapi tetap memungkinkan kunci ada di dalam map.

Keunggulan pendekatan ini adalah pendekatan ini memanfaatkan infrastruktur map yang sudah ada di Go sekaligus menyediakan semantik set yang sesungguhnya. Setiap nama warna hanya dapat muncul satu kali, dan kamu mendapatkan waktu pencarian yang cepat seperti pada map biasa.

challenge icon

Tantangan

Mudah

Buat pelacak preferensi bahasa pemrograman yang menunjukkan idiom set Go untuk menyimpan item unik. Tantangan ini menunjukkan cara menggunakan pola map[string]struct{} untuk melacak bahasa pemrograman tanpa duplikat.

Kamu akan menerima dua input:

  • String yang mewakili jumlah bahasa yang akan diproses (misalnya, "6")
  • String yang berisi bahasa pemrograman yang dipisahkan dengan koma (misalnya, "Go,Python,JavaScript,Go,Java,Python,C++,JavaScript")

Tugasmu adalah:

  1. Buat set menggunakan idiom Go map[string]struct{} untuk menyimpan bahasa pemrograman yang unik
  2. Urai string input dengan memisahkannya berdasarkan koma untuk mendapatkan nama masing-masing bahasa
  3. Tambahkan setiap bahasa ke set menggunakan literal struct kosong {} sebagai nilai
  4. Tampilkan hasil pemrosesan dengan mencetak setiap bahasa saat ditemukan:
    • Jika bahasa tersebut baru di dalam set: "Added: [language]"
    • Jika bahasa tersebut sudah ada di dalam set: "Already exists: [language]"
  5. Setelah memproses semua bahasa, tampilkan ringkasan:
    • "Total languages processed: [total_count]"
    • "Unique languages: [unique_count]"
  6. Terakhir, tampilkan semua bahasa unik di dalam set:
    • Header: "Programming languages in set:"
    • Setiap bahasa pada baris terpisah: "- [language]"

Gunakan package strings untuk memisahkan string input dan package strconv untuk mengonversi string jumlah menjadi integer. Untuk memeriksa apakah suatu bahasa sudah ada di dalam set sebelum menambahkannya, gunakan idiom comma ok: _, exists := languageSet[language]. Tantangan ini menunjukkan cara idiom set Go menyediakan cara yang efisien untuk melacak item unik dan mencegah duplikat dalam datamu.

Coba sendiri

package main

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

func main() {
	// Baca input
	var countStr string
	var languagesStr string
	fmt.Scanln(&countStr)
	fmt.Scanln(&languagesStr)
	
	// Ubah string count menjadi bilangan bulat (tidak diperlukan untuk tantangan ini)
	_, _ = strconv.Atoi(countStr)
	
	// Pisahkan string languages berdasarkan koma
	languages := strings.Split(languagesStr, ",")
	
	// Buat set menggunakan idiom map[string]struct{}
	languageSet := make(map[string]struct{})
	
	// TODO: Tulis kodemu di bawah ini
	// Proses setiap bahasa dan periksa apakah sudah ada di set
	// Gunakan idiom comma ok: _, exists := languageSet[language]
	// Cetak "Added: [language]" atau "Already exists: [language]"
	// Tambahkan bahasa ke set menggunakan literal struct kosong {}
	
	// Cetak informasi ringkasan
	// Cetak jumlah total bahasa yang diproses dan jumlah bahasa unik
	
	// Cetak semua bahasa unik dalam set
	fmt.Println("Programming languages in set:")
	// Ubah map menjadi slice, lalu urutkan agar output konsisten
	// Tampilkan setiap bahasa dengan format "- [language]"
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika & Alur

Latihan sendiri: Compiler Go online