Alternative solution to Project Euler problem 1

db4
Aaron Schaefer 2008-07-15 22:40:33 -04:00
parent b4fc1e0d5f
commit 94a1ef8356
1 changed files with 18 additions and 2 deletions

View File

@ -19,8 +19,17 @@ IN: project-euler.001
! Inclusion-exclusion principle ! Inclusion-exclusion principle
<PRIVATE
: sum-divisible-by ( target n -- m )
[ /i dup 1+ * ] keep * 2 /i ;
PRIVATE>
: euler001 ( -- answer ) : euler001 ( -- answer )
0 999 3 <range> sum 0 999 5 <range> sum + 0 999 15 <range> sum - ; 999 3 sum-divisible-by
999 5 sum-divisible-by +
999 15 sum-divisible-by - ;
! [ euler001 ] 100 ave-time ! [ euler001 ] 100 ave-time
! 0 ms run / 0 ms GC ave time - 100 trials ! 0 ms run / 0 ms GC ave time - 100 trials
@ -30,9 +39,16 @@ IN: project-euler.001
! ------------------- ! -------------------
: euler001a ( -- answer ) : euler001a ( -- answer )
1000 [ dup 5 mod swap 3 mod [ zero? ] either? ] filter sum ; 0 999 3 <range> sum 0 999 5 <range> sum + 0 999 15 <range> sum - ;
! [ euler001a ] 100 ave-time ! [ euler001a ] 100 ave-time
! 0 ms run / 0 ms GC ave time - 100 trials ! 0 ms run / 0 ms GC ave time - 100 trials
: euler001b ( -- answer )
1000 [ dup 5 mod swap 3 mod [ zero? ] either? ] filter sum ;
! [ euler001b ] 100 ave-time
! 0 ms run / 0 ms GC ave time - 100 trials
MAIN: euler001 MAIN: euler001