mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-06 09:28:26 +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
|
Example: coorDistance(2,2,14,11) will return 15
|
||||||
Wikipedia reference: https://en.wikipedia.org/wiki/Geographical_distance#Flat-surface_formulae
|
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 width = longitude2 - longitude1
|
||||||
const height = latitude2 - latitude1
|
const height = latitude2 - latitude1
|
||||||
return (Math.sqrt(width * width + height * height))
|
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'
|
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', () => {
|
it('Should give a numeric output (distance between 2 points) with 4 numeric arguments', () => {
|
||||||
const distance2points = coordinate.distance2points(2, 2, -10, -7)
|
const euclideanDistance = coordinate.euclideanDistance(2, 2, -10, -7)
|
||||||
expect(distance2points).toBe(15)
|
expect(euclideanDistance).toBe(15)
|
||||||
})
|
})
|
||||||
it('Should not give any output given non-numeric argument', () => {
|
it('Should not give any output given non-numeric argument', () => {
|
||||||
const distance2points = coordinate.distance2points('ABC', '123', '', '###')
|
const euclideanDistance = coordinate.euclideanDistance('ABC', '123', '', '###')
|
||||||
expect(distance2points).toBeNaN()
|
expect(euclideanDistance).toBeNaN()
|
||||||
})
|
})
|
||||||
it('Should not give any output given any number of numeric arguments less than 4', () => {
|
it('Should not give any output given any number of numeric arguments less than 4', () => {
|
||||||
const distance2points3arg = coordinate.distance2points(2, 2, -10)
|
const euclideanDistance3arg = coordinate.euclideanDistance(2, 2, -10)
|
||||||
const distance2points2arg = coordinate.distance2points(2, 2)
|
const euclideanDistance2arg = coordinate.euclideanDistance(2, 2)
|
||||||
const distance2points1arg = coordinate.distance2points(2)
|
const euclideanDistance1arg = coordinate.euclideanDistance(2)
|
||||||
const distance2points0arg = coordinate.distance2points()
|
const euclideanDistance0arg = coordinate.euclideanDistance()
|
||||||
expect(distance2points3arg).toBeNaN()
|
expect(euclideanDistance3arg).toBeNaN()
|
||||||
expect(distance2points2arg).toBeNaN()
|
expect(euclideanDistance2arg).toBeNaN()
|
||||||
expect(distance2points1arg).toBeNaN()
|
expect(euclideanDistance1arg).toBeNaN()
|
||||||
expect(distance2points0arg).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