Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การนับ AP ที่เป็นไปได้ภายในอาร์เรย์ใน JavaScript


ความก้าวหน้าทางคณิตศาสตร์

Arithmetic Progression (AP) คือลำดับของตัวเลขที่ผลต่างของตัวเลขสองตัวติดต่อกันเป็นค่าคงที่ (หรือที่รู้จักว่าผลต่างร่วม)

ตัวอย่างเช่น 1, 2, 3, 4, 5, 6,… คือ AP ซึ่งมีความแตกต่างทั่วไปเท่ากับ 1 (2 -1)

ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็ม arr เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียว

งานของฟังก์ชันของเราคือส่งคืนจำนวนความก้าวหน้าทางคณิตศาสตร์ของขนาด 3 ที่เป็นไปได้จากรายการนั้น ในแต่ละขั้นตอน ความแตกต่างระหว่างองค์ประกอบจะต้องเหมือนกัน เรารับประกันว่าอาร์เรย์อินพุตจะถูกจัดเรียงตามลำดับที่เพิ่มขึ้น ตัวอย่างเช่น ถ้าอินพุตของฟังก์ชันคือ

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −

ป้อนข้อมูล

const arr = [1, 2, 3, 5, 7, 9];

ผลผลิต

const output = 5;

คำอธิบายผลลัพธ์

เนื่องจาก AP ที่ต้องการคือ −

[1, 2, 3], [1, 3, 5], [1, 5, 9], [3, 5, 7] and [5, 7, 9]

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

const arr = [1, 2, 3, 5, 7, 9];
const countAP = (arr = []) => {
   let i, j, k;
   let { length: len } = arr;
   let count = 0;
   for (i = 0; i < len - 2; i++){
      for (k = i + 2; k < len; k++){
         let temp = arr[i] + arr[k];
         let div = temp / 2;
         if ((div * 2) == temp){
            for (j = i + 1; j < k; j++){
               if (arr[j] == div){
                  count += 1;
               }
            }
         }
      }
   }
   return count;
};
console.log(countAP(arr));

ผลลัพธ์

5