Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

หาตัวเลขที่หายไปในลำดับเลขคณิต (Arithmetic Progression) ด้วย JavaScript

ลำดับเลขคณิต (AP)

ลำดับที่ความต่างระหว่างพจน์ติดกันคงที่ เช่น 5, 7, 9, 11, 13...

ปัญหา

ได้รับอาร์เรย์ที่เป็น AP แต่ขาดตัวเลขหนึ่งตัว ให้หาตัวเลขที่หายไปในหนึ่งรอบการวน (one iteration)

ตัวอย่าง

const arr = [7, 13, 19, 31, 37, 43];

ตัวเลขที่หายคือ 25 (ระหว่าง 19 และ 31)

โค้ดตัวอย่าง

const arr = [7, 13, 19, 31, 37, 43]; 
const findMissingNumber = (arr = []) => { 
  let {length} = arr; 
  let diff1 = arr[1] - arr[0]; 
  let diff2 = arr[length - 1] - arr[length - 2]; 
  if (diff1 !== diff2) { 
    if (diff1 == 2 * diff2){ return arr[0] + diff2; } 
    else { return arr[length - 1] - diff1; } 
  } 
  for (let i = 1; i < length - 2; i++){ 
    if (arr[i + 1] - arr[i] != diff1){ return arr[i] + diff1; } 
  } 
  return arr[0]; 
}; 
console.log(findMissingNumber(arr));

ผลลัพธ์

25