Sayma ve Gruplama
Harita tabanlı yaygın kalıplar.
Sayma ve Gruplama, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 4 dersten oluşur.
Öğeleri Sayma
Çok yaygın bir görev, bir koleksiyondaki her değerin kaç kez göründüğünü saymaktır.
Değerden sayıya eşleyen bir HashMap bunun için doğal araçtır. Anahtar öğe, değer ise onun sayacıdır.
Sayma Kalıbı
Her öğe için yuvasını arayın, varsayılan değerini sıfır yapın ve bir ekleyin.
entry API'si bunu tek ve anlaşılır bir satır hâline getirir. Bu kalıp sayılabilen her öğe için çalışır.
use std::collections::HashMap;
fn main() {
let mut counts = HashMap::new();
for n in [1, 1, 2, 3, 3, 3] {
*counts.entry(n).or_insert(0) += 1;
}
println!("threes: {}", counts[&3]);
}Karakterleri Sayma
Dizeler karakterlerden oluşur; bu nedenle harf sıklığını da aynı şekilde sayabilirsiniz.
chars() ile yineleyin ve her birini haritaya ekleyerek sayın.
use std::collections::HashMap;
fn main() {
let mut freq = HashMap::new();
for c in "banana".chars() {
*freq.entry(c).or_insert(0) += 1;
}
println!("a: {}, n: {}", freq[&'a'], freq[&'n']);
}Sözcükleri Sayma
Sözcükleri saymak için bir cümleyi boşluklara göre split_whitespace ile bölün.
Her parça bir anahtar olur. Bu, basit bir sözcük sıklığı çözümleyicisinin temelidir.
use std::collections::HashMap;
fn main() {
let text = "go go stop go";
let mut counts = HashMap::new();
for w in text.split_whitespace() {
*counts.entry(w).or_insert(0) += 1;
}
println!("go: {}", counts["go"]);
}En Yüksek Sayıyı Bulma
Sayımları elde ettikten sonra yineleme yaparak ve en yüksek değeri izleyerek en sık görülen öğeyi bulun.
Her girdinin sayısını o ana kadar görülen en iyi değerle karşılaştırabilirsiniz.
use std::collections::HashMap;
fn main() {
let mut counts = HashMap::new();
for c in "aabbbc".chars() {
*counts.entry(c).or_insert(0) += 1;
}
let top = counts.iter().max_by_key(|(_, &v)| v).unwrap();
println!("most common: {}", top.0);
}Öğeleri Gruplama
Gruplama, ortak bir özelliği paylaşan öğeleri bölmelere yerleştirir.
Grup anahtarından üye Vec'ine eşleyen bir HashMap kullanın. entry API'si ilk kullanımda varsayılan olarak boş bir vektör oluşturur.
use std::collections::HashMap;
fn main() {
let mut groups: HashMap<bool, Vec<i32>> = HashMap::new();
for n in 1..=6 {
groups.entry(n % 2 == 0).or_default().push(n);
}
println!("evens: {:?}", groups[&true]);
}İlk Harfe Göre Gruplama
Doğal bir gruplama anahtarı, bir sözcüğün ilk karakteridir.
Bu karakteri çıkarın, ardından her sözcüğü eşleşen bölmeye ekleyin.
use std::collections::HashMap;
fn main() {
let words = ["apple", "avocado", "banana"];
let mut by_letter: HashMap<char, Vec<&str>> = HashMap::new();
for w in words {
let first = w.chars().next().unwrap();
by_letter.entry(first).or_default().push(w);
}
println!("a-words: {}", by_letter[&'a'].len());
}Uzunluğa Göre Gruplama
Her sözcüğün uzunluğu gibi hesaplanmış herhangi bir özelliğe göre gruplama yapabilirsiniz.
Buradaki anahtar bir sayıdır ve her bölme o uzunluktaki sözcükleri toplar.
use std::collections::HashMap;
fn main() {
let words = ["hi", "yo", "hey", "hello"];
let mut by_len: HashMap<usize, Vec<&str>> = HashMap::new();
for w in words {
by_len.entry(w.len()).or_default().push(w);
}
println!("len 2: {}", by_len[&2].len());
}Benzersiz Öğeleri Sayma
Farklı değerleri saymak için bir kümeyi haritayla birleştirin. Ya da doğrudan bir HashSet içine toplayıp uzunluğunu okuyun.
Bu, tekrarları yok sayarak kaç farklı öğenin bulunduğunu söyler.
use std::collections::HashSet;
fn main() {
let visits = ["sam", "mia", "sam", "leo", "mia"];
let unique: HashSet<&str> = visits.iter().copied().collect();
println!("unique visitors: {}", unique.len());
}Sonuçları Bildirme
Sayma veya gruplamadan sonra bir rapor yazdırmak için harita üzerinde döngü kurun.
Sıranın belirtilmediğini unutmayın; kararlı bir çıktı gerekiyorsa önce anahtarları sort edin.
use std::collections::HashMap;
fn main() {
let mut counts = HashMap::new();
for c in "abca".chars() {
*counts.entry(c).or_insert(0) += 1;
}
let mut keys: Vec<_> = counts.keys().collect();
keys.sort();
for k in keys {
println!("{}: {}", k, counts[k]);
}
}Grup Başına Toplama
Üyeleri toplamak yerine, anahtar başına değerleri toplamak gibi bir birleştirme işlemi yapabilirsiniz.
Yuvanın varsayılan değerini sıfır yapın ve saymada olduğu gibi her öğenin değerini ekleyin; tek fark burada gerçek miktarları kullanmanızdır.
use std::collections::HashMap;
fn main() {
let sales = [("a", 10), ("b", 5), ("a", 3)];
let mut totals: HashMap<&str, i32> = HashMap::new();
for (k, amount) in sales {
*totals.entry(k).or_insert(0) += amount;
}
println!("a total: {}", totals["a"]);
}Hızlı Kontrol
Sözcükleri ilk harflerine göre bölmelere gruplamak istiyorsunuz.
Özet
entry kalıbıyla öğeleri, karakterleri ve sözcükleri saydınız; en sık görülen değeri buldunuz.
Öğeleri harfe ve uzunluğa göre Vec bölmelerinde grupladınız ve farklı değerleri HashSet ile saydınız.
Sıkça Sorulan Sorular
“Sayma ve Gruplama” dersi ücretsiz mi?
Evet — “Sayma ve Gruplama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 4 dersten oluşur.
“Sayma ve Gruplama” dersinde ne öğreneceğim?
Harita tabanlı yaygın kalıplar. Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Sayma ve Gruplama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- HashMap Oluşturma
- Entry API'si ve Varsayılanlar
- HashSet ile Çalışma
- Sayma ve Gruplama