Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Added manhattan distance and euclidean distance for distance 2 points task #809

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
raklaptudirm merged 11 commits into TheAlgorithms:master from ddhira123:master
Oct 25, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
11 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions Maths/Coordinate.js
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
47 changes: 34 additions & 13 deletions Maths/test/Coordinate.test.js
View file Open in desktop
Original file line number Diff line number Diff line change
@@ -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()
})
})

AltStyle によって変換されたページ (->オリジナル) /