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

شرائح أخرى

جزء من قسم Logic & Flow في رحلة Rust على Coddy — الدرس 57 من 66.

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

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

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

يعمل المبدأ نفسه مع المتجهات (vectors). يمكنك إنشاء شرائح (slices) من المتجهات للتعامل مع أجزاء من البيانات دون نقلها أو نسخها:

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

التحدي

سهل

ستتلقى ثلاثة مدخلات. المدخل الأول عبارة عن قائمة أرقام مفصولة بفاصلة. المدخل الثاني عبارة عن رقمين مفصولين بمسافة يمثلان مؤشري البداية والنهاية لإنشاء شريحة (slice). المدخل الثالث عبارة عن رقم واحد يمثل مؤشراً للوصول إلى عنصر من الشريحة.

قم بإنشاء متجه (vector) من الأرقام المفصولة بفاصلة، ثم أنشئ شريحة باستخدام النطاق المحدد. قم بالوصول إلى العنصر الموجود في المؤشر المعطى من الشريحة وقم بطباعته.

المتطلبات:

  • اقرأ المدخل الأول (الأرقام المفصولة بفاصلة) وقم بإزالة المسافات الزائدة (trim)
  • قم بتقسيم المدخل بواسطة الفواصل وتحويل كل رقم إلى i32
  • أنشئ متجهاً (vector) من هذه الأرقام
  • اقرأ المدخل الثاني (رقمين مفصولين بمسافة) وقم بإزالة المسافات الزائدة
  • قم بتقسيم المدخل الثاني بواسطة المسافة للحصول على مؤشري البداية والنهاية
  • قم بتحويل كلا المؤشرين إلى usize
  • أنشئ شريحة من المتجه باستخدام صيغة النطاق &vec[start..end]
  • اقرأ المدخل الثالث (المؤشر المطلوب الوصول إليه) وقم بإزالة المسافات الزائدة
  • قم بتحويل المؤشر إلى usize
  • قم بالوصول إلى العنصر الموجود في المؤشر المحدد من الشريحة
  • اطبع العنصر الذي تم الوصول إليه

المدخلات:

  • السطر الأول: أرقام مفصولة بفاصلة (مثال: 10,20,30,40,50)
  • السطر الثاني: رقمين مفصولين بمسافة (مثال: 1 4)
  • السطر الثالث: رقم المؤشر (مثال: 2)

المخرجات:

  • العنصر الموجود في المؤشر المحدد من الشريحة

جرّب بنفسك

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اختبر نفسك

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

جميع دروس Logic & Flow