7.7 KiB
title, localeTitle
title | localeTitle |
---|---|
Sum All Numbers in a Range | مجموع كل الأرقام في المدى |
تذكر استخدام
Read-Search-Ask
إذا واجهتك مشكلة. حاول إقران البرنامج واكتب الكود الخاص بك
شرح المشكلة:
تحتاج إلى إنشاء برنامج من شأنه أن يأخذ مجموعة من رقمين ليسا بالضرورة في ترتيب ، ثم يضيف ليس فقط تلك الأرقام ولكن أي أرقام بينهما. على سبيل المثال ، ستكون [3،1] هي نفس 1+2+3
وليس 3+1
فقط
تلميح: 1
استخدم Math.max()
للبحث عن الحد الأقصى لقيمة رقمين.
حاول أن تحل المشكلة الآن
تلميح: 2
استخدم Math.min()
للبحث عن القيمة الدنيا من رقمين.
حاول أن تحل المشكلة الآن
تلميح: 3
تذكر أنه يجب إضافة جميع الأرقام بينهما حتى يتطلب ذلك طريقة للحصول على هذه الأرقام.
حاول أن تحل المشكلة الآن
تنبيه المفسد!
الحل في المستقبل!
الحل الأساسي للكود:
`function sumAll(arr) { var max = Math.max(arr[0], arr[1]); var min = Math.min(arr[0], arr[1]); var temp = 0; for (var i=min; i <= max; i++){ temp += i; } return(temp); }
sumAll([1, 4]); `
شرح الشفرة:
- قم أولاً بإنشاء متغير لتخزين العدد الأقصى بين اثنين.
- نفس الشيء كما كان من قبل لأصغر رقم.
- نقوم بإنشاء متغير مؤقت لإضافة الأرقام.
نظرًا لأن الأرقام قد لا تكون دائمًا في الترتيب ، فإن استخدام max()
و min()
سيساعد في التنظيم.
روابط ذات صلة
حل الشفرة المتوسطة:
`function sumAll(arr) { // Buckle up everything to one!
// Using ES6 arrow function (one-liner) var sortedArr = arr.sort((a,b) => ab); var firstNum = arr[0]; var lastNum = arr[1]; // Using Arithmetic Progression summing formula
var sum = (lastNum - firstNum + 1) * (firstNum + lastNum) / 2; return sum; } `
شرح الشفرة:
- أولاً ، نقوم بإنشاء متغير يسمى
sortedArr
الذي يقومsortedArr
من الأقل إلى أعلى قيمة. firstNum
يساوي الرقم الأول وlastNum
يساوي الرقم الثاني.- بعد ذلك ، باستخدام صيغة التلخيص الحسابي ، سنترك
sum
متساوياً(lastNum - firstNum + 1) * (firstNum + lastNum) / 2
. - وأخيرًا ، نرجع
sum
.
السطر var sortedArr = arr.sort((a,b) => ab);
هو على الارجح ما سيكون عليك المزيد من الارتباك. سيكون هذا هو نفس إنشاء دالة تقوم بإرجاع ab
sort()
وهي الطريقة القياسية لفرز الأرقام من الأصغر إلى الأكبر. وبدلاً من استخدام وظيفة السهم أو الدهون ، يمكننا القيام بكل ذلك في سطر واحد مما يسمح لنا بالكتابة أقل.
روابط ذات صلة
الحل المتقدم للكود:
`function sumAll(arr) { var sum = 0; for (var i = Math.min(...arr); i <= Math.max(...arr); i++){ sum += i; } return sum; }
sumAll([1, 4]); `
شرح الشفرة:
- إنشاء مبلغ متغير لتخزين مجموع العناصر.
- بدء التكرار للحلقة من عنصر min في صفيف معين والتوقف عند وصوله إلى عنصر max.
- يسمح استخدام عامل التوزيع (… arr) بتمرير الصفيف الفعلي إلى الوظيفة بدلاً من العناصر الفردية.
روابط ذات صلة
ملاحظات للمساهمات:
لا تقم بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها مشابهة ولكن أفضل ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
- أضف شرحًا لحلك.
- تصنيف الحل في واحدة من الفئات التالية - الأساسي والمتوسط والمتقدم .
- الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي محتويات رئيسية ذات صلة . (
لا تزيل أي أسماء مستخدمين حالية )
نرى
![]()
Wiki Challenge Solution Template
كمرجع.