]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/project-euler/076/076.factor
factor: trim using lists
[factor.git] / extra / project-euler / 076 / 076.factor
index b09a2742c3e8a2b244a854681b37e61034f1561d..23ceb6fe449a32530ca9a0ee94b40b06fe49b411 100644 (file)
@@ -1,6 +1,6 @@
-! Copyright (c) 2008 Eric Mertens
+! Copyright (c) 2008 Eric Mertens.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: arrays assocs combinators kernel math sequences math.ranges locals ;
+USING: arrays assocs kernel math math.order ranges sequences project-euler.common ;
 IN: project-euler.076
 
 ! http://projecteuler.net/index.php?section=problems&id=76
@@ -11,6 +11,7 @@ IN: project-euler.076
 ! How many different ways can one hundred be written as a
 ! sum of at least two positive integers?
 
+
 ! SOLUTION
 ! --------
 
@@ -24,7 +25,7 @@ IN: project-euler.076
 <PRIVATE
 
 : init ( n -- table )
-    [1,b] [ 0 2array 0 ] H{ } map>assoc
+    [1..b] [ 0 2array 0 ] H{ } map>assoc
     1 { 0 0 } pick set-at ;
 
 : use ( n i -- n i )
@@ -34,20 +35,25 @@ IN: project-euler.076
     over zero? [
         3drop
     ] [
-        [ [ 1-  2array ] dip at     ]
+        [ [ 1 -  2array ] dip at     ]
         [ [ use 2array ] dip at +   ]
         [ [     2array ] dip set-at ] 3tri
     ] if ;
 
 :: each-subproblem ( n quot -- )
-    n [1,b] [ dup [1,b] quot with each ] each ; inline
-
-PRIVATE>
+    n [1..b] [ dup [1..b] quot with each ] each ; inline
 
 : (euler076) ( n -- m )
     dup init
     [ [ ways ] curry each-subproblem ]
-    [ [ dup 2array ] dip at 1- ] 2bi ;
+    [ [ dup 2array ] dip at 1 - ] 2bi ;
 
-: euler076 ( -- m )
+PRIVATE>
+
+: euler076 ( -- answer )
     100 (euler076) ;
+
+! [ euler076 ] 100 ave-time
+! 560 ms ave run time - 17.74 SD (100 trials)
+
+SOLUTION: euler076