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

السؤال

Recommended Posts

  • 0
نشر

هنالك عدّة طرق في روبي للتأكد من أن المصفوفة بها عناصر متكررة أم لا، يمكنك مثلا استدعاء تابع uniq والذي سيرجع مصفوفة جديدة مشابهة للمصفوفة القديمة لكن بدون تكرارات وبعد ذلك يمكنك التأكد هل أن المصفوفة الجديدة تمتلك نفس عدد عناصر المصفوفة الأولى أم لا، فإذا كانت تمتلك نفس العدد فهذا يعني أنه ليس هنالك عناصر متكررة في مصفوفة:

if a.uniq.length == a.length
  puts "a does not contain duplicates"
else
  puts "a does contain duplicates"
end

ولمعرفة العناصر المتكرّرة يمكن استخدام ما يلي:

array = [1, 2, 1, 3, 5, 4, 5, 5]
=> [1, 2, 1, 3, 5, 4, 5, 5]
dup = array.select{|element| array.count(element) > 1 }
=> [1, 1, 5, 5, 5]
dup.uniq
=> [1, 5]
  • 0
نشر

إذا أردت معرفة فيما إذا كانت تحوي قيم متكررة، وتريد أن تعرف هذه القيم أيضًا، يمكنك القيام بذلك بالشكل التالي:

dups = [1,1,1,2,2,3].group_by{|e| e}.keep_if{|_, e| e.length > 1}
# => {1=>[1, 1, 1], 2=>[2, 2]}

الآن إذا كنت تريد القيم المكررة فقط:

dups.keys
# => [1, 2]

إذا كنت تريد عدد التكرارات لكل عنصر:

dups.map{|k, v| {k => v.length}}
# => [{1=>3}, {2=>2}]

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...