[CodeSignal] avoidObstacles


🎆Problem


You are given an array of integers representing coordinates of obstacles situated on a straight line.
Assume that you are jumping from the point with coordinate 0 to the right. You are allowed only to make jumps of the same length represented by some integer.
Find the minimal length of the jump enough to avoid all the obstacles.

Example


For inputArray = [5, 3, 6, 7, 9], the output should be
avoidObstacles(inputArray) = 4.
Check out the image below for better understanding:

🎇KeyPoint


障害物を避けるためには、数字ではなく数字を超えなければならない.
越えた距離をxと呼ぶと,x=3は3と6,9の約数であり,各障害物に到達すると遭遇する.
最終的には、すべてのinputArray要素の約数ではなく、1つの数字を見つけるだけです.

🎇Solution

function avoidObstacles(inputArray) {
    let x = 2;
    while(inputArray.some((el)=> 
        el % x === 0)){
        x++;
    }
    return x;
}
  • inputArrayのすべての要素をxで割った.
  • 1つの要素をxで割った場合、残りが0の場合、xはその要素の約数であるため、xは+1となる.
  • 繰り返し.
  • xによって区切られた要素がない場合、xはinputArray内のすべての要素の約数ではないので、すべての障害を回避することができる.