Menu
Coddy logo textTech

Final Kodu

Coddy'nin Rust Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 19 / 66.

challenge icon

Görev

Kolay

Eksiksiz bir yapılacaklar listesi iş akışını temsil eden dört girdi alacaksın: ilk olarak başlangıç görevlerinin virgülle ayrılmış listesi; ikinci olarak eklenecek yeni bir görev; üçüncü olarak görüntülenecek görev numarası (1 tabanlı indeksleme); dördüncü olarak kaldırılacak görev numarası (1 tabanlı indeksleme). Tüm bu işlemleri gerçekleştiren ve son durumu görüntüleyen eksiksiz bir yapılacaklar listesi yöneticisi oluştur.

Gereksinimler:

  • Virgülle ayrılmış görev açıklamalarını içeren ilk girdiyi oku (ör. Buy groceries,Call dentist,Finish homework)
  • Dizeyi virgüllere göre böl ve bu başlangıç görevleriyle değiştirilebilir bir vektör oluştur
  • İkinci girdiyi oku ve .push() kullanarak bu yeni görevi vektöre ekle
  • Üçüncü girdiyi oku ve bir tamsayıya dönüştür (görüntülenecek 1 tabanlı görev numarası)
  • Dördüncü girdiyi oku ve bir tamsayıya dönüştür (kaldırılacak 1 tabanlı görev numarası)
  • 1 tabanlı indeksi 0 tabanlı indekse dönüştürerek ve .remove() kullanarak belirtilen görevi kaldır
  • X son görev sayısı olmak üzere Total tasks: X yazdır
  • Görüntülenmesi istenen görev numarası Y olmak üzere Viewing task: Y yazdır
  • Son görev listesi üzerinde yinele ve her görevi numarasıyla birlikte (1 tabanlı) yazdır
  • Görüntüleme numarasıyla eşleşen görev için (kaldırma düzenlemelerinden sonra) [X] [task description] (selected) yazdır
  • Diğer tüm görevler için [X] [task description] yazdır

Girdi:

  • İlk satır: Virgülle ayrılmış görev açıklamaları (ör. Buy groceries,Call dentist,Finish homework)
  • İkinci satır: Eklenecek yeni görev (ör. Study for exam)
  • Üçüncü satır: Görüntülenecek görev numarasını temsil eden bir tamsayı (1 tabanlı indeksleme)
  • Dördüncü satır: Kaldırılacak görev numarasını temsil eden bir tamsayı (1 tabanlı indeksleme)

Çıktı:

  • İlk satır: X son görev sayısı olmak üzere Total tasks: X
  • İkinci satır: İstenen görüntüleme numarası olmak üzere Viewing task: Y
  • Sonraki satırlar: [X] [task description] biçiminde numarasıyla birlikte her görev
  • Seçilen görevin (görüntüleme numarasıyla eşleşen) sonuna (selected) eklenmelidir

Kendin dene

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

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // Başlangıçtaki virgülle ayrılmış görevleri oku
    let initial_tasks = lines.next().unwrap().unwrap();
    
    // Eklenecek yeni görevi oku
    let new_task = lines.next().unwrap().unwrap();
    
    // Görüntülenecek görev numarasını oku (1 tabanlı)
    let view_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // Silinecek görev numarasını oku (1 tabanlı)
    let remove_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // TODO: Kodunuzu aşağıya yazın
    // 1. initial_tasks değişkenini virgüllere göre ayırın ve değiştirilebilir bir vektör oluşturun
    // 2. new_task değişkenini vektöre ekleyin
    // 3. remove_number konumundaki görevi silin (0 tabanlı dizine dönüştürün)
    // 4. Toplam görev sayısını ve görüntülenen görev bilgisini yazdırın
    // 5. Nihai liste üzerinde döngü kurun ve her bir görevi yazdırın
    
}

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Rust derleyicisi