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

السؤال

نشر

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

Recommended Posts

  • 1
نشر (معدل)

لإيجاد مجموع أكبر 3 أعداد، علينا فعل الآتي:

  • ترتيب المصفوفة ليكون البحث عن أكبر قيم سهل.
  • فصل أكبر 3 قيم لجمعهم، أو عمل For Loop عادية لمدة 3 مرات.

أولاً: سنستخدم sort لترتيب المصفوفة من الأكبر للأصغر هكذا:

// لاحظ الدالة المعطاه في الداخل لترتيب الأرقام من الأكبر للأصغر
[32, 256, 8, 16, 128, 64].sort((a, b) => b - a)

والآن سنستخدم splice لقطع أول 3 قيم هكذا:

// الرقم 0 يعني أننا سنبدأ القطع من أول عنصر في المصفوفة
// والرقم 3 يعني أننا سنتوقف عند العنصر الذي لدية رقم فهرس 3
[32, 256, 8, 16, 128, 64].sort((a, b) => b - a).splice(0, 3);

أصبح معنا الآن مصفوفة بها أكبر 3 أرقام. يمكنك عمل For Loop أو reduce. سأقوم بإستخدام reduce هكذا:

function sumOfLargestThree(array) {
	return array
		.sort((a, b) => b - a)
		.splice(0, 3)
		.reduce((total, current) => total + current, 0);
}

sumOfLargestThree([32, 256, 8, 16, 128, 64]); // => 448

 

تم التعديل في بواسطة إسلام عبدالعزيز
تعديل المثال
  • 1
نشر

في لغة بايثون لجمع عناصر مصفوفة نستخدم الدالة sum:

print(sum([1, 2, 3])) # 6

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

print(sorted([11, 2, 1, 9, 7])) # [1, 2, 7, 9, 11]

الدالة sorted تُرتب تصاعدياً لقلب الترتيب نستخدم الدالة sorted و نُمرر لها مُعامل آخر:

print(sorted([11, 2, 1, 9, 7], reverse=True)) # [11, 9, 7, 2, 1]

لأخذ قطعة من مصفوفة نستخدم slice كما هو موضح أدناه:

a[start:stop]  # نُحدد البداية و النهاية

مثلاً:

print([11, 2, 1, 9, 7][0:3]) # [11, 2, 1]

إجمع كل هذه النقاط مع بعض للوصول للشيء الذي تُريده أولاً الترتيب بشكل تنازلي ثانياً أخذ قطعة من المصفوفة المرتبة مكونة من 3 أعداد ثم إستعمال الدالة sum.

و هذا مثال بسيط:

print(sum(sorted([11, 2, 1, 9, 7], reverse=True)[0:3])) # 27

يُمكنك إستخدام هذه المراحل لإنشاء دالة تفعل ما تريد.

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...