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

كيف تجد العنصر الأكثر تكرارا في مصفوفة معينة في روبي؟

المبرمج العربي

السؤال

هل هنالك دالة أو طريقة معينة في لغة روبي لتحديد العنصر الأكثر تكرارا في مصفوفة معينة؟
أمثلة على ما أريده (طبعا الأمثلة لا تعمل):

[1, 1, 1, 2, 3].mode
=> 1

['cat', 'dog', 'snake', 'dog'].mode
=> dog
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

هنالك طرق عديدة في لغة روبي لإيجاد العنصر الأكثر تكرارا في مصفوفة معين، فيمكنك على سبيل المثال بناء hash يدور حول عناصر المصفوفة ويسجل مرات تكرارها كما في المثال التالي:

arr = [1, 1, 1, 2, 3]

freq = arr.inject(Hash.new(0)) { |h,v| h[v] += 1; h }
#=> {1=>3, 2=>1, 3=>1}

وبعد ذلك يمكنك البحث عن العنصر الذي يملك أكبر عدد من التكرارات كما في المثال التالي:

arr.max_by { |v| freq[v] }
#=> 1

ومن الطرق الأخرى لإيجاد التكرارات هي عن طريق ترتيب المصفوفة حسب مرات تكراراها ومن ثم نحصل على العنصر الأخير منها كما في المثال التالي:

    sort_by {|i| grep(i).length }.last

كما يمكنك استخدام هذه الطريقة والتي تعتبر الأسرع مقارنة بالطريقتين السابقتين:

    freq = inject(Hash.new(0)) { |h,v| h[v] += 1; h }
    max = freq.values.max                   # we're only interested in the key(s) with the highest frequency
    freq.select { |k, f| f == max }         # extract the keys that have the max frequency
رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...