عد إذا كان هناك أكثر من 1 في حدوث مجموعة 2d في روبي

StackOverflow https://stackoverflow.com/questions/1605959

  •  05-07-2019
  •  | 
  •  

سؤال

لدي مجموعة مرتبة:

array = [[4, 13], [1, 12], [3, 8], [2, 8], [0, 3]]

والذي يظهر لي موقف (مجموعة[n][0]) و عدد من الحوادث من هذا الموقف (مجموعة[n][1]).

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

ظننت أنني قد تكون قادرة على القيام بذلك مع هذا:

array.detect {|i| i[1] == array.last[1] }.length

لكنه يعود 2 أعلاه مجموعة, ويبدو أيضا عودة 2 الصفيف التالية:

array = [[4, 13], [1, 12], [3, 8], [2, 3], [0, 3]]

عند تشغيل بدون طول ذلك يعود دائما التواجد الأول.

هل هناك طريقة للحصول على هذا لحساب التكرارات ؟

تحرير:

آسف سوف اسال متابعة السؤال في سؤال جديد.

هل كانت مفيدة؟

المحلول

حاول استخدام find_all بدلا من detect. detect يعود أول مباراة.في المثال الأول ، array[3], الذي هو آخر مجموعة من طول 2.هذا هو السبب في انها عودته 2 (يجب أن يكون دائما العودة 2 أو معدومة على المصفوفات الخاصة بك). find_all عودة مجموعة من المباريات (بدلا من المباراة الأولى نفسها), و سوف يكون طوله القيمة التي تريدها.

نصائح أخرى

وهنا أوضح طريقة لفعل ما تريد ، مع أي من المخاوف المرتبطة.

array.count{|i| i[1] == array.last[1]}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top