mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-07 02:05:08 +08:00
feat: Added Euclidean Distance (#1418)
* Added Euclidean Distance * Added documentation to params * Use @see annotation --------- Co-authored-by: Lars Müller <34514239+appgurueu@users.noreply.github.com>
This commit is contained in:
19
Maths/EuclideanDistance.js
Normal file
19
Maths/EuclideanDistance.js
Normal file
@ -0,0 +1,19 @@
|
||||
/**
|
||||
* @see [Wikipedia](https://en.wikipedia.org/wiki/Euclidean_distance)
|
||||
* Calculate the Euclidean distance between two vectors.
|
||||
* @param {number[]} vector1 - The first vector.
|
||||
* @param {number[]} vector2 - The second vector.
|
||||
* @returns {number} The Euclidean distance between the two vectors.
|
||||
*/
|
||||
|
||||
const EuclideanDistance = (vector1, vector2) => {
|
||||
let sumOfSquares = 0
|
||||
|
||||
for (let i = 0; i < vector1.length; i++) {
|
||||
sumOfSquares += Math.pow(vector1[i] - vector2[i], 2)
|
||||
}
|
||||
|
||||
return Math.sqrt(sumOfSquares)
|
||||
}
|
||||
|
||||
export { EuclideanDistance }
|
19
Maths/test/EuclideanDistance.test.js
Normal file
19
Maths/test/EuclideanDistance.test.js
Normal file
@ -0,0 +1,19 @@
|
||||
import { EuclideanDistance } from '../EuclideanDistance.js'
|
||||
|
||||
describe('EuclideanDistance', () => {
|
||||
it('should calculate the distance correctly for 2D vectors', () => {
|
||||
expect(EuclideanDistance([0, 0], [2, 2])).toBeCloseTo(2.8284271247461903, 10)
|
||||
})
|
||||
|
||||
it('should calculate the distance correctly for 3D vectors', () => {
|
||||
expect(EuclideanDistance([0, 0, 0], [2, 2, 2])).toBeCloseTo(3.4641016151377544, 10)
|
||||
})
|
||||
|
||||
it('should calculate the distance correctly for 4D vectors', () => {
|
||||
expect(EuclideanDistance([1, 2, 3, 4], [5, 6, 7, 8])).toBeCloseTo(8.0, 10)
|
||||
})
|
||||
|
||||
it('should calculate the distance correctly for different 2D vectors', () => {
|
||||
expect(EuclideanDistance([1, 2], [4, 6])).toBeCloseTo(5.0, 10)
|
||||
})
|
||||
})
|
Reference in New Issue
Block a user