-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstraightLine.js
More file actions
35 lines (28 loc) · 1.02 KB
/
straightLine.js
File metadata and controls
35 lines (28 loc) · 1.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
* @param {number[][]} coordinates
* @return {boolean}
*/
const checkStraightLine = function (coordinates) {
let currCoordinate = coordinates[0];
let nextCoordinate = coordinates[1];
let xCoordinateDiffPrev = nextCoordinate[0] - currCoordinate[0];
let yCoordinateDiffPrev = nextCoordinate[1] - currCoordinate[1];
let slopePrev = yCoordinateDiffPrev / xCoordinateDiffPrev;
for (let i = 1; i < coordinates.length - 1; i++) {
currCoordinate = coordinates[i];
nextCoordinate = coordinates[i + 1];
xCoordinateDiffCur = nextCoordinate[0] - currCoordinate[0];
yCoordinateDiffCur = nextCoordinate[1] - currCoordinate[1];
let slopeCur = yCoordinateDiffCur / xCoordinateDiffCur;
if (Math.abs(slopeCur) === Infinity && Math.abs(slopePrev === Infinity)) continue;
if (slopeCur !== slopePrev) return false;
slopePrev = slopeCur;
}
return true;
};
const coordinates = [
[0, 0],
[0, 1],
[0, -1]
];
console.log(checkStraightLine(coordinates));