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.

Dize dilimleri çok yararlı olsa da, dilimleme sadece dizelerle sınırlı değildir. Rust'ın dilim kavramı herhangi bir öğe dizisine kadar uzanır ve sahipliği almadan koleksiyonlarla çalışmak için onu güçlü bir araç haline getirir.

Dizilerden 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örler için de geçerlidir. 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 (trim)
  • 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

Kopya kağıdı

Dilimler (slices) sadece dizelerden değil, dizilerden ve vektörlerden de oluşturulabilir. Sahipliği almadan bir koleksiyonun bir kısmına referans verirler.

Dizilerden dilim oluşturma:

let numbers = [1, 2, 3, 4, 5];
let slice: &[i32] = &numbers[1..4]; // [2, 3, 4] değerlerini referans alır
let full_slice: &[i32] = &numbers;  // Tüm diziyi referans alır

Vektörlerden dilim oluşturma:

let mut vec = vec![10, 20, 30, 40];
let vec_slice: &[i32] = &vec[0..2]; // [10, 20] değerlerini referans alır

Dilimler, dize dilimleriyle aynı aralık (range) sözdizimini kullanır ve verileri taşımadan veya kopyalamadan verilerin belirli kısımlarıyla çalışmanıza olanak tanır.

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 elemana 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