]> gitweb.factorcode.org Git - factor.git/commitdiff
Additional solution to PE problem 1 from IRC
authorAaron Schaefer <aaron@elasticdog.com>
Sun, 19 Apr 2009 17:01:02 +0000 (13:01 -0400)
committerAaron Schaefer <aaron@elasticdog.com>
Sun, 19 Apr 2009 17:01:02 +0000 (13:01 -0400)
extra/project-euler/001/001-tests.factor
extra/project-euler/001/001.factor

index 1cab2756192b690b3ded1aa9fb4a207714873760..32a72dfaf0d735df8b88b4fbc3147a69653e5f73 100644 (file)
@@ -5,3 +5,4 @@ IN: project-euler.001.tests
 [ 233168 ] [ euler001a ] unit-test
 [ 233168 ] [ euler001b ] unit-test
 [ 233168 ] [ euler001c ] unit-test
+[ 233168 ] [ euler001d ] unit-test
index 20e08242c5e3a0f00091f7e6a5d6e36a0cd5a20a..0d4f5fb1bdddbbc5e5fd92c50048be95cd4b49c5 100644 (file)
@@ -1,6 +1,7 @@
 ! Copyright (c) 2007, 2008 Aaron Schaefer, Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.functions math.ranges sequences project-euler.common ;
+USING: kernel math math.functions math.ranges project-euler.common sequences
+    sets ;
 IN: project-euler.001
 
 ! http://projecteuler.net/index.php?section=problems&id=1
@@ -32,7 +33,7 @@ PRIVATE>
     999 15 sum-divisible-by - ;
 
 ! [ euler001 ] 100 ave-time
-! 0 ms run / 0 ms GC ave time - 100 trials
+! 0 ms ave run time - 0.0 SD (100 trials)
 
 
 ! ALTERNATE SOLUTIONS
@@ -42,14 +43,14 @@ PRIVATE>
     0 999 3 <range> sum 0 999 5 <range> sum + 0 999 15 <range> sum - ;
 
 ! [ euler001a ] 100 ave-time
-! 0 ms run / 0 ms GC ave time - 100 trials
+! 0 ms ave run time - 0.03 SD (100 trials)
 
 
 : euler001b ( -- answer )
     1000 [ [ 5 mod ] [ 3 mod ] bi [ 0 = ] either? ] filter sum ;
 
 ! [ euler001b ] 100 ave-time
-! 0 ms run / 0 ms GC ave time - 100 trials
+! 0 ms ave run time - 0.06 SD (100 trials)
 
 
 : euler001c ( -- answer )
@@ -58,4 +59,11 @@ PRIVATE>
 ! [ euler001c ] 100 ave-time
 ! 0 ms ave run time - 0.06 SD (100 trials)
 
+
+: euler001d ( -- answer )
+    { 3 5 } [ [ 999 ] keep <range> ] gather sum ;
+
+! [ euler001d ] 100 ave-time
+! 0 ms ave run time - 0.08 SD (100 trials)
+
 SOLUTION: euler001