البرمجة

تحسين تصفية المصفوفة باستخدام Ruby

في لغة Ruby، يُظهر الأكواد التي تتعامل مع مصفوفة من الأرقام وتقوم بمقارنة العناصر مع جيرانها. لكن في هذا السياق، يبدو أنك تبحث عن وظيفة تشبه “#map” و “#select” ولكن تأخذ في اعتبارها القدرة على الرجوع إلى العناصر السابقة والتالية.

لحل هذه المشكلة، يُمكن استخدام “#each_with_index” لتحقيق الوظيفة المرغوبة. يمكننا كتابة دالة تمر على كل عنصر في المصفوفة مع استخدام مؤشره، ثم نقوم بمقارنة القيمة الحالية مع القيمتين السابقة والتالية.

اليك كود Ruby المحتمل:

ruby
class Array def select_with_neighbors(&block) result = [] each_with_index do |item, index| prev_item = self[index - 1] if index - 1 >= 0 next_item = self[index + 1] if index + 1 < size result << item if block.call(item, prev_item, next_item) end result end end a = [1, 2, 3, 90, 4, 5, 6, ..., 10] filtered_array = a.select_with_neighbors { |current, prev, nxt| (current - prev).abs <= 2 && (current - nxt).abs <= 2 } puts filtered_array.inspect

تم إنشاء دالة مخصصة باسم “select_with_neighbors” تستخدم “#each_with_index” لتمرير عبر المصفوفة مع مؤشرها. يتم قارن قيمة العنصر الحالي مع القيمتين السابقة والتالية، وإذا تم تحقيق الشرط المطلوب (في هذا السياق، فارق القيمة أقل من أو يساوي 2)، يتم إضافة العنصر إلى المصفوفة الناتجة.

يمكن تخصيص الشرط في الدالة وفقًا لاحتياجاتك الخاصة. يمكنك تغييره بناءً على طبيعة المقارنة التي ترغب في تنفيذها بين العناصر.

المزيد من المعلومات

في هذا السياق، يُستخدم الكود البرمجي للتعامل مع مصفوفة من الأرقام في لغة Ruby. يتم تحسين الكود باستخدام تمديد للفئة Array باسم “select_with_neighbors”، الذي يمكنه مراجعة القيم الحالية ومقارنتها بالقيمتين السابقة والتالية. يُظهر الكود كيف يمكن استخدام هذا التمديد لتحقيق الهدف المطلوب.

ببساطة، يتم استخدام دالة “each_with_index” للمرور عبر المصفوفة مع الحفاظ على مؤشر العنصر الحالي. ثم يتم استخدام هذا المؤشر للوصول إلى القيمتين السابقة والتالية في المصفوفة. يتم تطبيق الشرط المعين، الذي يعبر عن اختلاف القيم بحد أقصى محدد، ويتم إضافة العناصر التي تحقق الشرط إلى مصفوفة النتائج.

كمثال، يُظهر الكود استخدام قاعدة “abs” للحصول على القيم المطلقة لاختلافات القيم. يمكن تخصيص هذا الشرط وفقًا لمتطلبات البرنامج الخاص بك.

هذا النهج يسمح بتحقيق المرونة والتخصيص في التعامل مع المصفوفات بطريقة تسمح بالتعامل مع العناصر وفقًا للشروط المحددة.

زر الذهاب إلى الأعلى