mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-05 00:01:37 +08:00
merge: Added manhattan distance and euclidean distance for distance 2 points task (#809)
* Added Hex to Binary conversion * Update Conversions/HexToBinary.js Co-authored-by: Rak Laptudirm <raklaptudirm@gmail.com> * Update Conversions/HexToBinary.js Co-authored-by: Rak Laptudirm <raklaptudirm@gmail.com> * Update Conversions/HexToBinary.js Co-authored-by: Rak Laptudirm <raklaptudirm@gmail.com> * Update Conversions/HexToBinary.js Co-authored-by: Rak Laptudirm <raklaptudirm@gmail.com> * Fix errors * fix: typo * Added Manhattan Distance Algorithm Co-authored-by: Rak Laptudirm <raklaptudirm@gmail.com>
This commit is contained in:
@ -4,10 +4,16 @@
|
||||
Example: coorDistance(2,2,14,11) will return 15
|
||||
Wikipedia reference: https://en.wikipedia.org/wiki/Geographical_distance#Flat-surface_formulae
|
||||
*/
|
||||
const distance2points = (longitude1, latitude1, longitude2, latitude2) => {
|
||||
const euclideanDistance = (longitude1, latitude1, longitude2, latitude2) => {
|
||||
const width = longitude2 - longitude1
|
||||
const height = latitude2 - latitude1
|
||||
return (Math.sqrt(width * width + height * height))
|
||||
}
|
||||
|
||||
export { distance2points }
|
||||
const manhattanDistance = (longitude1, latitude1, longitude2, latitude2) => {
|
||||
const width = Math.abs(longitude2 - longitude1)
|
||||
const height = Math.abs(latitude2 - latitude1)
|
||||
return width + height
|
||||
}
|
||||
|
||||
export { euclideanDistance, manhattanDistance }
|
||||
|
@ -1,22 +1,43 @@
|
||||
import * as coordinate from '../Coordinate'
|
||||
|
||||
describe('Testing distance2points calculations', () => {
|
||||
describe('Testing euclideanDistance calculations', () => {
|
||||
it('Should give a numeric output (distance between 2 points) with 4 numeric arguments', () => {
|
||||
const distance2points = coordinate.distance2points(2, 2, -10, -7)
|
||||
expect(distance2points).toBe(15)
|
||||
const euclideanDistance = coordinate.euclideanDistance(2, 2, -10, -7)
|
||||
expect(euclideanDistance).toBe(15)
|
||||
})
|
||||
it('Should not give any output given non-numeric argument', () => {
|
||||
const distance2points = coordinate.distance2points('ABC', '123', '', '###')
|
||||
expect(distance2points).toBeNaN()
|
||||
const euclideanDistance = coordinate.euclideanDistance('ABC', '123', '', '###')
|
||||
expect(euclideanDistance).toBeNaN()
|
||||
})
|
||||
it('Should not give any output given any number of numeric arguments less than 4', () => {
|
||||
const distance2points3arg = coordinate.distance2points(2, 2, -10)
|
||||
const distance2points2arg = coordinate.distance2points(2, 2)
|
||||
const distance2points1arg = coordinate.distance2points(2)
|
||||
const distance2points0arg = coordinate.distance2points()
|
||||
expect(distance2points3arg).toBeNaN()
|
||||
expect(distance2points2arg).toBeNaN()
|
||||
expect(distance2points1arg).toBeNaN()
|
||||
expect(distance2points0arg).toBeNaN()
|
||||
const euclideanDistance3arg = coordinate.euclideanDistance(2, 2, -10)
|
||||
const euclideanDistance2arg = coordinate.euclideanDistance(2, 2)
|
||||
const euclideanDistance1arg = coordinate.euclideanDistance(2)
|
||||
const euclideanDistance0arg = coordinate.euclideanDistance()
|
||||
expect(euclideanDistance3arg).toBeNaN()
|
||||
expect(euclideanDistance2arg).toBeNaN()
|
||||
expect(euclideanDistance1arg).toBeNaN()
|
||||
expect(euclideanDistance0arg).toBeNaN()
|
||||
})
|
||||
})
|
||||
|
||||
describe('Testing manhattanDistance calculations', () => {
|
||||
it('Should give a numeric output (distance between 2 points) with 4 numeric arguments', () => {
|
||||
const manhattanDistance = coordinate.manhattanDistance(2, 2, -10, -7)
|
||||
expect(manhattanDistance).toBe(21)
|
||||
})
|
||||
it('Should not give any output given non-numeric argument', () => {
|
||||
const manhattanDistance = coordinate.manhattanDistance('ABC', '123', '', '###')
|
||||
expect(manhattanDistance).toBeNaN()
|
||||
})
|
||||
it('Should not give any output given any number of numeric arguments less than 4', () => {
|
||||
const manhattanDistance3arg = coordinate.manhattanDistance(2, 2, -10)
|
||||
const manhattanDistance2arg = coordinate.manhattanDistance(2, 2)
|
||||
const manhattanDistance1arg = coordinate.manhattanDistance(2)
|
||||
const manhattanDistance0arg = coordinate.manhattanDistance()
|
||||
expect(manhattanDistance3arg).toBeNaN()
|
||||
expect(manhattanDistance2arg).toBeNaN()
|
||||
expect(manhattanDistance1arg).toBeNaN()
|
||||
expect(manhattanDistance0arg).toBeNaN()
|
||||
})
|
||||
})
|
||||
|
Reference in New Issue
Block a user