]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/project-euler/025/025.factor
Delete empty unit tests files, remove 1- and 1+, reorder IN: lines in a lot of places...
[factor.git] / extra / project-euler / 025 / 025.factor
index 2819e210a717a5eb244e0dbba6756f126a502c72..e381e323d15f3fa61b586d675d2c06585a585f98 100644 (file)
@@ -1,6 +1,6 @@
-! Copyright (c) 2007 Aaron Schaefer.
+! Copyright (c) 2008 Aaron Schaefer.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: alien.syntax kernel math math.functions math.parser math.ranges memoize
+USING: kernel math math.constants math.functions math.parser memoize
     project-euler.common sequences ;
 IN: project-euler.025
 
@@ -39,12 +39,12 @@ IN: project-euler.025
 ! Memoized brute force
 
 MEMO: fib ( m -- n )
-    dup 1 > [ 1- dup fib swap 1- fib + ] when ;
+    dup 1 > [ [ 1 - fib ] [ 2 - fib ] bi + ] when ;
 
 <PRIVATE
 
 : (digit-fib) ( n term -- term )
-    2dup fib number>string length > [ 1+ (digit-fib) ] [ nip ] if ;
+    2dup fib number>string length > [ 1 + (digit-fib) ] [ nip ] if ;
 
 : digit-fib ( n -- term )
     1 (digit-fib) ;
@@ -55,7 +55,7 @@ PRIVATE>
     1000 digit-fib ;
 
 ! [ euler025 ] 10 ave-time
-! 5237 ms run / 72 ms GC ave time - 10 trials
+! 5345 ms ave run time - 105.91 SD (10 trials)
 
 
 ! ALTERNATE SOLUTIONS
@@ -67,11 +67,8 @@ PRIVATE>
 
 <PRIVATE
 
-: phi ( -- phi )
-    5 sqrt 1+ 2 / ;
-
 : digit-fib* ( n -- term )
-    1- 5 log10 2 / + phi log10 / ceiling >integer ;
+    1 - 5 log10 2 / + phi log10 / ceiling >integer ;
 
 PRIVATE>
 
@@ -79,6 +76,6 @@ PRIVATE>
     1000 digit-fib* ;
 
 ! [ euler025a ] 100 ave-time
-! 0 ms run / 0 ms GC ave time - 100 trials
+! 0 ms ave run time - 0.17 SD (100 trials)
 
-MAIN: euler025a
+SOLUTION: euler025a