اذهب إلى المحتوى
  • 0

كيف أحصل على أرقام القيّم الأقل من عدد ما في مصفوفة روبي؟

salimi

السؤال

لديّ مصفوفة في روبي تحتوي على عدّة قيم، وأرغب بالحصول على أرقام القيّم الأقل من عدد ما، مثلا 21، بحيث يكون المخرج جميع أرقام القيم الأصغر من 21:

a=[10,20,30,10,3,2,200]

المُخرج سيكون كالتّالي:

[0, 1, 3, 4, 5]

فكيف يُمكن القيّام بذلك؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يُمكن الحصول على النّتيجة المرغوبة بعدّة طرق منها:

1. استعمال التّابع size.times.with_object مع جملة شرطيّة كالتّالي:

a.size.times.with_object([]) { |i,b| b << i if a[i] < 21 }

2. استعمال size.times.map:

a.size.times.map { |i| a[i] < 21 ? i : nil }.compact

3. استعمال التّابع  zip:

a.zip( Array(0...a.size) ).select { |e,_| e < 21 }.map(&:last)

4.  استعمال التّابع reduce

a.reduce([[],0]) { |(b,i),e| [e < 21 ? b << i : b, i + 1] }.first

5. استخدام  each_with_object

 a.each_with_object([]) {|e,a| a << (e.to_i < 21 ? a.size : nil) }.compact

6.  استخدام التّعابير القيّاسية مع توابع المصفوفات:

a.join(',').gsub(/(\d+)/) { |e| (e.to_i < 21) ? $`.count(',') : nil } \
           .gsub(',,',',').split(',').map(&:to_i)

جميع الطّرق أعلاه ترجع نفس القيمة:

[0, 1, 3, 4, 5]

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...