Skip to content

Instantly share code, notes, and snippets.

@tomca32
Created August 1, 2013 17:30
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 tomca32/6133486 to your computer and use it in GitHub Desktop.
Save tomca32/6133486 to your computer and use it in GitHub Desktop.
Fibonacci Words
;
//Project Euler Problem #230 - Fibonacci Words
(function (exports) {
function getNumber (n) {
return (127+19*n)*(Math.pow(7,n));
}
exports.nFibo = function (n) {
//Returns the nth part of Fibonacci Sequence
var s = Math.sqrt(5);
return Math.round((1/s) * (Math.pow(((1+s)/2),n) - Math.pow(((1-s)/2),n)));
};
exports.nWords = function(word, n) {
//Returns the number of sequence that contains nth number and its length
var l = word.length, result;
n = getNumber(n);
// console.log(l, n);
for (var i = 1; i < n; i += 1) {
result = exports.nFibo(i);
console.log(i, result);
if ((result * l) >= n) return {
nSequence: i,
sLength: result
};
}
};
function D (a,b,n) {
var i = 0, prev = b.length, curr = a.length, sprev = 'B', scurr = 'A', temp = 0, size = 0;
while (true) {
temp = curr;
curr = curr+prev;
prev = temp;
temp = scurr;
scurr = scurr+sprev;
sprev = temp;
i += 1;
if (curr >= n) break;
}
var arr = scurr.split('');
console.log(arr.length);//join().toString().replace(/,/g,''));
for (var j = 0; j <arr.length; j += 1) {
var e = arr[j];
size += (e === 'A' ? a.length : b.length);
if (size >= n) {
// console.log("GOT IT:", e, size, n, arr);
return e === 'A' ? a[size-n-1] : b[size-n-1];
// return e;
}
}
}
exports.smash = function (a,b,n) {
console.log(D(a, b, f(n)));
// if (n===0) return D(a,b,f(n));
// return Number(D(a,b,f(n))) + Number(smash(a,b,n-1));
};
}(typeof window === 'undefined' ? global : window));
var A = "1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679";
var B = "8214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196";
// console.log(smash(A,B,9));
// smash(A,B, 8);
console.log(nWords(A, 17));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment