أحاول حل جميع الدروس حول قابلية البرمجة ، لكنني فشلت في القيام بذلك بشأن المشكلة التالية: سلم حسب قابلية البرمجة
لقد بحثت في جميع أنحاء الإنترنت ولا أجد إجابة ترضيني لأنه لا أحد يجيب عن سبب تأثير الحد الأقصى للمتغير على النتيجة.
لذا ، قبل نشر الرمز ، سأشرح التفكير.
بالنظر إلى ذلك ، لم أكن بحاجة إلى الكثير من الوقت لفهم أن العدد الإجمالي للتركيبات هو رقم فيبوناتشي ، وإزالة الصفر من صفيف فيبوناتشي ، سأجد الإجابة سريعة حقًا.
الآن ، بعد ذلك ، أخبروا أننا يجب أن نعيد عدد مجموعات التركيبات 2 ^ B [i].
حتى الآن جيد جدًا ، وقررت إرساله دون فار ماكس ، ثم حصلت على درجة 37٪ .. لقد بحثت في جميع أنحاء الإنترنت وكانت النتيجة 100٪ مشابهة لي ولكنهم أضافوا أن max = Math.pow (2،30).
يمكن لأي شخص أن يشرح لي كيف ولماذا يؤثر هذا الحد الأقصى على النتيجة؟
رمز بلدي:
// Powers 2 to num
function pow(num){
return Math.pow(2,num);
}
// Returns a array with all fibonacci numbers except for 0
function fibArray(num){
// const max = pow(30); -> Adding this max to the fibonaccy array makes the answer be 100%
const arr = [0,1,1];
let current = 2;
while(current<=num){
current++;
// next = arr[current-1]+arr[current-2] % max;
next = arr[current-1]+arr[current-2]; // Without this max it's 30 %
arr.push(next);
}
arr.shift(); // remove 0
return arr;
}
function solution(A, B) {
let f = fibArray(A.length + 1);
let res = new Array(A.length);
for (let i = 0; i < A.length; ++i) {
res[i] = f[A[i]] % (pow(B[i]));
}
return res;
}
console.log(solution([4,4,5,5,1],[3,2,4,3,1])); //5,1,8,0,1
// Note that the console.log wont differ in this solution having max set or not.
// Running the exercise on Codility shows the full log with all details
// of where it passed and where it failed.