mirror of
https://github.com/theoludwig/programming-challenges.git
synced 2024-12-08 00:45:29 +01:00
✨ Add "pairwise" challenge
This commit is contained in:
parent
8be530c08d
commit
60bb10be6e
25
challenges/pairwise/README.md
Normal file
25
challenges/pairwise/README.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# pairwise
|
||||||
|
|
||||||
|
Created by [@Divlo](https://github.com/Divlo) at 8 July 2020.
|
||||||
|
|
||||||
|
## Instructions :
|
||||||
|
|
||||||
|
Given an array `arr`, find element pairs whose sum equal the second argument `arg` and return the sum of their indices.
|
||||||
|
|
||||||
|
You may use multiple pairs that have the same numeric elements but different indices. Each pair should use the lowest possible available indices. Once an element has been used it cannot be reused to pair with another element. For instance, `pairwise([1, 1, 2], 3)` creates a pair `[2, 1]` using the 1 at index 0 rather than the 1 at index 1, because 0+2 < 1+2.
|
||||||
|
|
||||||
|
For example `pairwise([7, 9, 11, 13, 15], 20)` returns `6`. The pairs that sum to 20 are `[7, 13]` and `[9, 11]`. We can then write out the array with their indices and values.
|
||||||
|
|
||||||
|
| Index | 0 | 1 | 2 | 3 | 4 |
|
||||||
|
|-------|---|---|----|----|----|
|
||||||
|
| Value | 7 | 9 | 11 | 13 | 15 |
|
||||||
|
|
||||||
|
Below we'll take their corresponding indices and add them.
|
||||||
|
|
||||||
|
- 7 + 13 = 20 → Indices 0 + 3 = 3
|
||||||
|
- 9 + 11 = 20 → Indices 1 + 2 = 3
|
||||||
|
- 3 + 3 = 6 → Return 6
|
||||||
|
|
||||||
|
## Examples :
|
||||||
|
|
||||||
|
See the `input-output.json` file for examples of input/output.
|
22
challenges/pairwise/input-output.json
Normal file
22
challenges/pairwise/input-output.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"input": [[1, 4, 2, 3, 0, 5], 7],
|
||||||
|
"output": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"input": [[1, 3, 2, 4], 4],
|
||||||
|
"output": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"input": [[1, 1, 1], 2],
|
||||||
|
"output": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"input": [[0, 0, 0, 0, 1, 1], 1],
|
||||||
|
"output": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"input": [[], 100],
|
||||||
|
"output": 0
|
||||||
|
}
|
||||||
|
]
|
0
challenges/pairwise/solutions/.gitkeep
Normal file
0
challenges/pairwise/solutions/.gitkeep
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# javascript-pairwise - pairwise
|
||||||
|
|
||||||
|
Programming language : JavaScript
|
||||||
|
Created by [@Divlo](https://github.com/Divlo) at 8 July 2020.
|
@ -0,0 +1,15 @@
|
|||||||
|
function solution (arr, arg) {
|
||||||
|
return arr.reduce((accumulator, currentNumber, indexReduce, array) => {
|
||||||
|
for (let index = indexReduce + 1; index < array.length; index++) {
|
||||||
|
if (array[index] + array[indexReduce] === arg) {
|
||||||
|
accumulator += indexReduce + index
|
||||||
|
array[indexReduce] = NaN
|
||||||
|
array[index] = NaN
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return accumulator
|
||||||
|
}, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = solution
|
Loading…
Reference in New Issue
Block a user