Menu
Coddy logo textTech

Diğer Dilimler

Coddy'nin Rust Journey'sinin Logic & Flow bölümünün bir parçası — ders 57 / 66.

String dilimleri çok kullanışlı olsa da, dilimleme sadece dizelerle sınırlı değildir. Rust'ın dilim (slice) kavramı, herhangi bir öğe dizisine uzanır ve bu da onu sahiplik (ownership) almadan koleksiyonlarla çalışmak için güçlü bir araç haline getirir.

Diziler ve vektörlerden, dizgiler için öğrendiğiniz aynı söz dizimini kullanarak dilimler oluşturabilirsiniz. Örneğin, bir sayı diziniz varsa, onun bir kısmına veya tamamına başvuran bir dilim oluşturabilirsiniz:

let numbers = [1, 2, 3, 4, 5];
let slice: &[i32] = &numbers[1..4]; // Bu bize [2, 3, 4] verir
let full_slice: &[i32] = &numbers;  // Bu tüm diziye başvurur

Aynı ilke vektörlerle de çalışır. Verileri taşımadan veya kopyalamadan verilerin bölümleriyle çalışmak için vektörlerden dilimler oluşturabilirsiniz:

let mut vec = vec![10, 20, 30, 40];
let vec_slice: &[i32] = &vec[0..2]; // Bu bize [10, 20] verir
challenge icon

Görev

Kolay

Üç girdi alacaksınız. İlk girdi, virgülle ayrılmış sayılardan oluşan bir listedir. İkinci girdi, bir dilim (slice) oluşturmak için başlangıç ve bitiş indekslerini temsil eden, aralarında boşluk bulunan iki sayıdır. Üçüncü girdi ise dilimden erişilecek bir indeksi temsil eden tek bir sayıdır.

Virgülle ayrılmış sayılardan bir vektör oluşturun, ardından belirtilen aralığı kullanarak bir dilim oluşturun. Dilimdeki verilen indeksteki öğeye erişin ve bunu yazdırın.

Gereksinimler:

  • İlk girdiyi (virgülle ayrılmış sayılar) okuyun ve boşlukları temizleyin
  • Girdiyi virgüllere göre ayırın ve her bir sayıyı i32 türüne dönüştürün
  • Bu sayılardan bir vektör oluşturun
  • İkinci girdiyi (boşlukla ayrılmış iki sayı) okuyun ve boşlukları temizleyin
  • Başlangıç ve bitiş indekslerini elde etmek için ikinci girdiyi boşluğa göre ayırın
  • Her iki indeksi de usize türüne dönüştürün
  • &vec[start..end] aralık sözdizimini kullanarak vektörden bir dilim oluşturun
  • Üçüncü girdiyi (erişilecek indeks) okuyun ve boşlukları temizleyin
  • İndeksi usize türüne dönüştürün
  • Dilimdeki belirtilen indeksteki öğeye erişin
  • Erişilen öğeyi yazdırın

Girdi:

  • İlk satır: Virgülle ayrılmış sayılar (örneğin, 10,20,30,40,50)
  • İkinci satır: Boşlukla ayrılmış iki sayı (örneğin, 1 4)
  • Üçüncü satır: Bir indeks numarası (örneğin, 2)

Çıktı:

  • Dilimdeki belirtilen indeksteki öğe

Kendin dene

use std::io::{self, BufRead};

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // İlk girişi oku (virgülle ayrılmış sayılar)
    let first_input = lines.next().unwrap().unwrap();
    
    // İkinci girişi oku (başlangıç ve bitiş indeksleri)
    let second_input = lines.next().unwrap().unwrap();
    
    // Üçüncü girişi oku (erişilecek indeks)
    let third_input = lines.next().unwrap().unwrap();
    
    // TODO: Kodunuzu aşağıya yazın
    // Virgülle ayrılmış sayıları ayrıştırın ve bir vektör oluşturun
    // Başlangıç ve bitiş indekslerini ayrıştırın
    // Vektörden bir dilim (slice) oluşturun
    // Dilimden belirtilen indeksteki öğeye erişin
    
    // Sonucu yazdırın
    // println!("{}", result);
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Logic & Flow bölümündeki tüm dersler