Skip to content

Commit c35ee63

Browse files
committed
adding find even idx
1 parent 2cbd42c commit c35ee63

File tree

5 files changed

+75
-1
lines changed

5 files changed

+75
-1
lines changed

docs/find-even-index.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# find-even-index
2+
3+
You are going to be given an array of integers. Your job is to take that array and find an index N where the sum of the integers to the left of N is equal to the sum of the integers to the right of N. If there is no index that would make this happen, return `-1`.
4+
5+
### For example:
6+
7+
Let's say you are given the array `{1,2,3,4,3,2,1}`:
8+
Your function will return the index `3`, because at the 3rd position of the array, the sum of left side of the index (`{1,2,3}`) and the sum of the right side of the index (`{3,2,1}`) both equal `6`.
9+
10+
Let's look at another one.
11+
You are given the array `{1,100,50,-51,1,1}`:
12+
Your function will return the index 1, because at the 1st position of the array, the sum of left side of the index (`{1}`) and the sum of the right side of the index (`{50,-51,1,1}`) both equal `1`.
13+
14+
### Last one:
15+
16+
You are given the array `{20,10,-80,10,10,15,35}`
17+
At index `0` the left side is `{}`
18+
The right side is `{10,-80,10,10,15,35}`
19+
They both are equal to 0 when added. (Empty arrays are equal to 0 in this problem)
20+
Index `0` is the place where the left side and right side are equal.
21+
22+
**Note:** Please remember that in most programming/scripting languages the index of an array starts at `0`.
23+
24+
### Input:
25+
26+
An integer array of length `0 < arr < 1000`. The numbers in the array can be any integer positive or negative.
27+
28+
### Output:
29+
30+
The lowest index N where the side to the left of N is equal to the side to the right of N. If you do not find an index that fits these rules, then you will return `-1`.
31+
32+
**Note:**
33+
34+
If you are given an array with multiple answers, return the lowest correct index.
35+
36+
## Install
37+
38+
```
39+
$ npm install @abranhe/codewars
40+
```
41+
42+
## Usage
43+
44+
```js
45+
const codewars = require('@abranhe/codewars');
46+
47+
codewars.findEvenIndex([1, 2, 3, 4, 3, 2, 1]);
48+
//=> 3
49+
```
50+
51+
## API
52+
53+
### codewars.findEvenIndex(input)
54+
55+
#### input
56+
57+
Type: `array`

readme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ codewars.maskify('454233223424324');
3030
- [codewars.squareDigit()](docs/square-every-digit.md)
3131
- [codewars.complementaryDNA()](docs/complementary-dna.md)
3232
- [codewars.getMiddle()](docs/middle-character.md)
33+
- [codewars.findEvenIndex()](docs/find-even-index.md)
3334

3435
## License
3536

src/find-even-index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module.exports = arr => {
2+
return arr.findIndex((i, idx) => {
3+
return arr.slice(0, idx).reduce((pv, cv) => pv + cv, 0) === arr.slice(idx + 1).reduce((pv, cv) => pv + cv, 0);
4+
});
5+
};

src/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ const spinWords = require('./spin-words');
55
const squareDigits = require('./square-every-digit');
66
const complementaryDNA = require('./complementary-dna');
77
const getMiddle = require('./middle-character');
8+
const findEvenIndex = require('./find-even-index');
89

910
module.exports = {
1011
maskify,
1112
spinWords,
1213
squareDigits,
1314
complementaryDNA,
14-
getMiddle
15+
getMiddle,
16+
findEvenIndex
1517
};

tests/find-even-index.test.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import test from 'ava';
2+
import {findEvenIndex} from '../src';
3+
4+
test('Check find-even-index.js', t => {
5+
t.is(findEvenIndex([1, 2, 3, 4, 3, 2, 1]), 3);
6+
t.is(findEvenIndex([1, 100, 50, -51, 1, 1]), 1);
7+
t.is(findEvenIndex([1, 2, 3, 4, 5, 6]), -1);
8+
t.is(findEvenIndex([20, 10, 30, 10, 10, 15, 35]), 3);
9+
});

0 commit comments

Comments
 (0)