المبرمج العربي نشر 21 ديسمبر 2015 أرسل تقرير نشر 21 ديسمبر 2015 هل هنالك دالة أو طريقة معينة في لغة روبي لتحديد العنصر الأكثر تكرارا في مصفوفة معينة؟أمثلة على ما أريده (طبعا الأمثلة لا تعمل):[1, 1, 1, 2, 3].mode => 1 ['cat', 'dog', 'snake', 'dog'].mode => dog اقتباس
0 هشام رزق الله نشر 21 ديسمبر 2015 أرسل تقرير نشر 21 ديسمبر 2015 هنالك طرق عديدة في لغة روبي لإيجاد العنصر الأكثر تكرارا في مصفوفة معين، فيمكنك على سبيل المثال بناء 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 اقتباس
السؤال
المبرمج العربي
هل هنالك دالة أو طريقة معينة في لغة روبي لتحديد العنصر الأكثر تكرارا في مصفوفة معينة؟
أمثلة على ما أريده (طبعا الأمثلة لا تعمل):
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.