Skip to content

Commit e8d862c

Browse files
merge: Added manhattan distance and euclidean distance for distance 2 points task (TheAlgorithms#809)
* Added Hex to Binary conversion * Update Conversions/HexToBinary.js Co-authored-by: Rak Laptudirm <[email protected]> * Update Conversions/HexToBinary.js Co-authored-by: Rak Laptudirm <[email protected]> * Update Conversions/HexToBinary.js Co-authored-by: Rak Laptudirm <[email protected]> * Update Conversions/HexToBinary.js Co-authored-by: Rak Laptudirm <[email protected]> * Fix errors * fix: typo * Added Manhattan Distance Algorithm Co-authored-by: Rak Laptudirm <[email protected]>
1 parent 32f1e33 commit e8d862c

File tree

2 files changed

+42
-15
lines changed

2 files changed

+42
-15
lines changed

Maths/Coordinate.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,16 @@
44
Example: coorDistance(2,2,14,11) will return 15
55
Wikipedia reference: https://en.wikipedia.org/wiki/Geographical_distance#Flat-surface_formulae
66
*/
7-
const distance2points = (longitude1, latitude1, longitude2, latitude2) => {
7+
const euclideanDistance = (longitude1, latitude1, longitude2, latitude2) => {
88
const width = longitude2 - longitude1
99
const height = latitude2 - latitude1
1010
return (Math.sqrt(width * width + height * height))
1111
}
1212

13-
export { distance2points }
13+
const manhattanDistance = (longitude1, latitude1, longitude2, latitude2) => {
14+
const width = Math.abs(longitude2 - longitude1)
15+
const height = Math.abs(latitude2 - latitude1)
16+
return width + height
17+
}
18+
19+
export { euclideanDistance, manhattanDistance }

Maths/test/Coordinate.test.js

Lines changed: 34 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,43 @@
11
import * as coordinate from '../Coordinate'
22

3-
describe('Testing distance2points calculations', () => {
3+
describe('Testing euclideanDistance calculations', () => {
44
it('Should give a numeric output (distance between 2 points) with 4 numeric arguments', () => {
5-
const distance2points = coordinate.distance2points(2, 2, -10, -7)
6-
expect(distance2points).toBe(15)
5+
const euclideanDistance = coordinate.euclideanDistance(2, 2, -10, -7)
6+
expect(euclideanDistance).toBe(15)
77
})
88
it('Should not give any output given non-numeric argument', () => {
9-
const distance2points = coordinate.distance2points('ABC', '123', '', '###')
10-
expect(distance2points).toBeNaN()
9+
const euclideanDistance = coordinate.euclideanDistance('ABC', '123', '', '###')
10+
expect(euclideanDistance).toBeNaN()
1111
})
1212
it('Should not give any output given any number of numeric arguments less than 4', () => {
13-
const distance2points3arg = coordinate.distance2points(2, 2, -10)
14-
const distance2points2arg = coordinate.distance2points(2, 2)
15-
const distance2points1arg = coordinate.distance2points(2)
16-
const distance2points0arg = coordinate.distance2points()
17-
expect(distance2points3arg).toBeNaN()
18-
expect(distance2points2arg).toBeNaN()
19-
expect(distance2points1arg).toBeNaN()
20-
expect(distance2points0arg).toBeNaN()
13+
const euclideanDistance3arg = coordinate.euclideanDistance(2, 2, -10)
14+
const euclideanDistance2arg = coordinate.euclideanDistance(2, 2)
15+
const euclideanDistance1arg = coordinate.euclideanDistance(2)
16+
const euclideanDistance0arg = coordinate.euclideanDistance()
17+
expect(euclideanDistance3arg).toBeNaN()
18+
expect(euclideanDistance2arg).toBeNaN()
19+
expect(euclideanDistance1arg).toBeNaN()
20+
expect(euclideanDistance0arg).toBeNaN()
21+
})
22+
})
23+
24+
describe('Testing manhattanDistance calculations', () => {
25+
it('Should give a numeric output (distance between 2 points) with 4 numeric arguments', () => {
26+
const manhattanDistance = coordinate.manhattanDistance(2, 2, -10, -7)
27+
expect(manhattanDistance).toBe(21)
28+
})
29+
it('Should not give any output given non-numeric argument', () => {
30+
const manhattanDistance = coordinate.manhattanDistance('ABC', '123', '', '###')
31+
expect(manhattanDistance).toBeNaN()
32+
})
33+
it('Should not give any output given any number of numeric arguments less than 4', () => {
34+
const manhattanDistance3arg = coordinate.manhattanDistance(2, 2, -10)
35+
const manhattanDistance2arg = coordinate.manhattanDistance(2, 2)
36+
const manhattanDistance1arg = coordinate.manhattanDistance(2)
37+
const manhattanDistance0arg = coordinate.manhattanDistance()
38+
expect(manhattanDistance3arg).toBeNaN()
39+
expect(manhattanDistance2arg).toBeNaN()
40+
expect(manhattanDistance1arg).toBeNaN()
41+
expect(manhattanDistance0arg).toBeNaN()
2142
})
2243
})

0 commit comments

Comments
 (0)