Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

شرائح أخرى

جزء من قسم المنطق وتدفّق التنفيذ في رحلة Rust على Coddy. الدرس 57 من 66.

على الرغم من أن شرائح السلاسل النصية مفيدة جدًا، فإن التقطيع لا يقتصر على السلاسل النصية فقط. يمتد مفهوم الشرائح في Rust إلى أي تسلسل من العناصر، مما يجعله أداة قوية للعمل مع المجموعات دون امتلاكها.

يمكنك إنشاء شرائح من المصفوفات والمتجهات باستخدام الصياغة نفسها التي تعلمتها للسلاسل النصية. على سبيل المثال، إذا كانت لديك مصفوفة من numbers، فيمكنك إنشاء شريحة تشير إلى جزء منها أو إليها بالكامل:

let numbers = [1, 2, 3, 4, 5];
let slice: &[i32] = &numbers[1..4]; // هذا يعطينا [2, 3, 4]
let full_slice: &[i32] = &numbers;  // هذا يشير إلى المصفوفة بأكملها

يعمل المبدأ نفسه مع vector. يمكنك إنشاء slice من vector للعمل مع أجزاء من data دون نقلها أو نسخها:

let mut vec = vec![10, 20, 30, 40];
let vec_slice: &[i32] = &vec[0..2]; // هذا يعطينا [10, 20]
challenge icon

التحدي

سهل

ستتلقى ثلاثة مدخلات. المدخل الأول هو قائمة من numbers مفصولة بـ comma. المدخل الثاني هو رقمان separated بمسافة، ويمثلان مؤشري start وend لإنشاء slice. المدخل الثالث هو رقم واحد يمثل index للوصول إليه من slice.

Create vector من numbers المفصولة بـ comma، ثم Create slice باستخدام النطاق specified. نفّذ Access للعنصر عند index المحدد من slice واطبعه.

المتطلبات:

  • اقرأ المدخل الأول (numbers مفصولة بـ comma) ونفّذ trim للمسافات البيضاء
  • نفّذ split للمدخل باستخدام commas وparse لكل number إلى i32
  • Create vector من هذه numbers
  • اقرأ المدخل الثاني (رقمان separated بمسافة) ونفّذ trim للمسافات البيضاء
  • نفّذ split للمدخل الثاني حسب المسافة للحصول على مؤشري start وend
  • نفّذ parse لكلا المؤشرين إلى usize
  • Create slice من vector باستخدام صيغة النطاق &vec[start..end]
  • اقرأ المدخل الثالث (index للوصول إليه) ونفّذ trim للمسافات البيضاء
  • نفّذ parse للـ index إلى usize
  • نفّذ Access للعنصر عند index specified من slice
  • اطبع العنصر الذي تم الوصول إليه

المدخل:

  • السطر الأول: numbers مفصولة بـ comma (مثلًا: 10,20,30,40,50)
  • السطر الثاني: رقمان separated بمسافة (مثلًا: 1 4)
  • السطر الثالث: رقم index (مثلًا: 2)

المخرج:

  • العنصر عند index specified من slice

جرّب بنفسك

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

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // اقرأ المدخل الأول (أرقام مفصولة بفواصل)
    let first_input = lines.next().unwrap().unwrap();
    
    // اقرأ المدخل الثاني (فهرسا البداية والنهاية)
    let second_input = lines.next().unwrap().unwrap();
    
    // اقرأ المدخل الثالث (الفهرس للوصول إليه)
    let third_input = lines.next().unwrap().unwrap();
    
    // TODO: اكتب الكود الخاص بك أدناه
    // حلل الأرقام المفصولة بفواصل وأنشئ vector
    // حلل فهرسي البداية والنهاية
    // أنشئ slice من الـ vector
    // الوصول إلى العنصر عند الفهرس المحدد من الـ slice
    
    // اطبع النتيجة
    // println!("{}", result);
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفّق التنفيذ

تدرّب بنفسك: مترجم Rust عبر الإنترنت