Skip to content

Instantly share code, notes, and snippets.

@pslusarz
Last active August 29, 2015 14:02
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 pslusarz/98b19d41eee49e8bfb2e to your computer and use it in GitHub Desktop.
Save pslusarz/98b19d41eee49e8bfb2e to your computer and use it in GitHub Desktop.
Functional: Sum Even Fibonacci < 4,000,000
def fibSeed = [1,1]
def nextFib = { l -> l[-2]+l[-1] }
def nextFibSeed = {l -> (l << nextFib(l)).tail()}
def upTo = {max, l -> l[-1] > max}
def even = {l -> l[-2]%2 ? l[-2] : 0}
def sumGoodUntilDone = {series, next, done, good -> done(series) ? good(series) : good(series) + call( next(series), next, done, good)}
def sumFib = sumGoodUntilDone.curry(fibSeed, nextFibSeed)
println sumFib(upTo.curry(4000000), even)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment