Merge pull request #880 from Garebake/master

Added Midpoint.js
This commit is contained in:
Angelos Chalaris
2018-12-07 18:25:11 +02:00
committed by GitHub
3 changed files with 51 additions and 0 deletions

16
snippets/midpoint.md Normal file
View File

@ -0,0 +1,16 @@
### midpoint
Calculates the midpoint between two pairs of (x,y) points.
Destructure the array to get `x1`, `y1`, `x2` and `y2`, calculate the midpoint for each dimension by dividing the sum of the two endpoints by `2`.
```js
const midpoint = ([x1, y1], [x2, y2]) => [(x1 + x2) / 2, (y1 + y2) / 2];
```
```js
midpoint([2, 2], [4, 4]); // [3, 3]
midpoint([4, 4], [6, 6]); // [5, 5]
midpoint([1, 3], [2, 4]); // [1.5, 3.5]
```

View File

@ -188,6 +188,7 @@ maxN:array,math,beginner
median:math,array,intermediate median:math,array,intermediate
memoize:function,advanced memoize:function,advanced
merge:object,array,intermediate merge:object,array,intermediate
midpoint:math,array,beginner
minBy:math,array,function,beginner minBy:math,array,function,beginner
minDate:date,math,beginner minDate:date,math,beginner
minN:array,math,beginner minN:array,math,beginner

34
test/midpoint.test.js Normal file
View File

@ -0,0 +1,34 @@
const expect = require('expect');
const { midpoint } = require('./_30s.js');
test('midpoint is a Function', () => {
expect(midpoint).toBeInstanceOf(Function);
});
test('midpoint([2, 2], [4, 4]) = [3, 3]', () => {
expect(midpoint([2, 2], [4, 4])).toEqual([3, 3]);
});
test('midpoint([4, 4], [6, 6]) = [5,5]', () => {
expect(midpoint([4, 4], [6, 6])).toEqual([5, 5]);
});
test('midpoint([1, 3], [2, 4]) = [3,3]', () => {
expect(midpoint([1, 3], [2, 4])).toEqual([1.5, 3.5]);
});
test('midpoint([-2, 0], [-2, 4]) = [-2,2]', () => {
expect(midpoint([-2, 0], [-2, 4])).toEqual([-2, 2]);
});
test('midpoint([0, 0], [0, 0]) = [0,0]', () => {
expect(midpoint([0, 0], [0, 0])).toEqual([0, 0]);
});
test('midpoint([10, -10], [20, 30]) = [15, 10]', () => {
expect(midpoint([10, -10], [20, 30])).toEqual([15, 10]);
});
test('midpoint([7.5, -1.3], [2.7, 11.1]) = [5.1, 4.8999999999999995]', () => {
expect(midpoint([7.5, -1.3], [2.7, 11.1])).toEqual([5.1, 4.8999999999999995]);
});