fibonacci
HackerRank
by trentHarlem
CSS
body {
background-color: dodgerblue;
color: whitesmoke;
font: 20px system-ui;
}
JavaScript
function sumFibs(num) {
let pre = 0;
let cur = 1;
let result = 0;
while (cur <= num) {
/* if (cur % 2 !== 0) {
result += cur;
} */
cur += pre;
pre = cur - pre;
}
return result;
}
sumFibs(10)
/* const fib = n => new Array(n = n + 1).fill(0)
//const fibo = n => (n).toString().split(' ').map((n=n-n,b=n+1)=>a,b)
const fibo = n => Array.from([n]).map(n=> ([let a=n-n,b=n-n+1]))
*/
//.reduce((acc, cur, i, arr) => acc.length<arr[0]?acc+i:n, [])
//acc.length<arr?acc.push(cur):acc.push(acc+cur),[])
//.reduce((a,c,i,arr) => i<n?a+c:a+1,[])
//. a=n-n,b=a+1,c=a+b return
// (c=a+b))
//console.log(fibo(10))
//console.log(a,i,arr)
//////////////
/* function backwardFibonacci(n) {
let fib = [];
for (let i = 0; i < n+1; i++) {
if (i < 2) {
fib.push(i)
}
if (i >= 2) {
fib.push(fib[i - 2] + fib[i - 1])
}
}
console.log('fibonacci', fib)
// create array with the difference in values of fibonacci 10
console.log('fibonacci-backward', fib.slice().reverse().splice(2))
return fib.slice().reverse().map((a,i,arr) => a-arr[i+1])
//return fib.slice().reverse().map((a,i,arr) => a-arr[i+1]).slice(0,-2)
} */
//
//const expected = [21, 13, 8, 5, 3, 2, 1, 0]
//const expectedMath = [55-34,34-21,21-13,13-8,8-5,5-3,3-2,1-1,1-0]
//console.log('expectedMath',expectedMath)
// the backward fibonacci sequence is the same as the forward sequence reversed minus 2 indeces
///////// original working solution
function fibonacci(n) {
let fib = [];
for (let i = 0; i < n + 1; i++) {
if (i < 2) {
fib.push(i)
}
if (i >= 2) {
fib.push(fib[i - 2] + fib[i - 1])
}
}
console.log('fibonacci', fib)
return fib[n]
}
console.log(fibonacci(10))
//console.log(fib(10))
//console.log(backwardFibonacci(10))
/* function backwardFibon(n) {
let fib = [];
//let counter = 1;
for (let i = 0; i < n+1; i++) {
if (i < 2 ) {
fib.push(i)
//counter++
console.log(i,fib[i],fib)
...