From 7e7b56db42ceb8d2b8973eae678fa4b58d5d3659 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 13 May 2009 23:32:40 -0500 Subject: add old solutions --- 2.lua | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 2.lua (limited to '2.lua') diff --git a/2.lua b/2.lua new file mode 100644 index 0000000..d70cdc3 --- /dev/null +++ b/2.lua @@ -0,0 +1,30 @@ +local function memoize(fn) + local t = {} + return function(x) + local y = t[x] + if y == nil then y = fn(x); t[x] = y end + return y + end +end + +fib = memoize(function(n) + if n < 3 then return 1 end + return fib(n - 1) + fib(n - 2) +end) + +local root5 = math.sqrt(5) +local phi = (1 + root5)/2 +local function fib2(n) + return math.floor((phi^n-(1-phi)^n)/root5+0.5) +end + +local sum = 0 +local i = 0 +while true do + i = i + 1 + local n = fib(i) + if n > 1000000 then break end + if n % 2 == 0 then sum = sum + n end +end + +print(sum) -- cgit v1.2.3