Skip to content

Instantly share code, notes, and snippets.

@andrewhl
Last active March 27, 2017 21:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andrewhl/d4bca5711e22bd6ad0183ff9eefebdfd to your computer and use it in GitHub Desktop.
Save andrewhl/d4bca5711e22bd6ad0183ff9eefebdfd to your computer and use it in GitHub Desktop.
(() => {
const range = (num) => {
return [...Array(num).keys()].map(n => n+1)
}
const productEqualsSum = (a, b, number) => {
const sum = ((number * (number+1)) / 2) - (a+b);
return a*b === sum;
}
const getPair = (numbers, n) => {
let clone = numbers.slice(0);
let result = [];
for (let a of numbers) {
if (result.length > 0) {
break;
}
for (let b of clone) {
if (b+1 > numbers[numbers.length - 1]) {
break;
}
if (productEqualsSum(a, b+1, n)) {
result = [a, b+1];
break;
}
}
clone.shift();
}
return result;
}
const mirrorPair = (pair) => {
return [pair, pair.slice().reverse()];
}
function removeNb (n) {
let numbers = range(n);
let pair = getPair(numbers, n);
return (!pair.length) ? pair : mirrorPair(pair);
}
return removeNb(300);
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment