Archive for the 'Project Euler' Category

Project Euler Problem 2 Functional Java

Friday, October 3rd, 2008

Project Euler Problem 2 using Functional Java:

import fj.data.Stream;
import fj.P1;
import fj.F2;
import static fj.function.Integers.even;
import static fj.pre.Ord.intOrd;
import static fj.pre.Monoid.intAdditionMonoid;
import static fj.data.Stream.cons;
import static fj.Function.curry;
 
...
 
Stream<Integer> fibs = new F2<Integer, Integer, Stream<Integer>>() {
  public Stream<Integer> f(final Integer a, final Integer b) {
    return cons(a, P1.curry(curry(this).f(b)).f(a + b));
  }
}.f(1, 2);
 
final int problem2 = intAdditionMonoid.sumLeft(fibs.takeWhile(intOrd.isLessThan(1000001)).filter(even).toList());

Project Euler Problem 1 Functional Java

Friday, October 3rd, 2008

Project Euler Problem 1 using Functional Java:

import static fj.pre.Monoid.intAdditionMonoid;
import static fj.data.List.range;
import fj.F;
 
...
 
final int problem1 = intAdditionMonoid.sumLeft(range(0, 1000).filter(new F<Integer, Boolean>() {
  public Boolean f(final Integer a) {
    return a % 3 == 0 || a % 5 == 0;
  }
}));