عد إذا كان هناك أكثر من 1 في حدوث مجموعة 2d في روبي
سؤال
لدي مجموعة مرتبة:
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]}