]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/project-euler/027/027.factor
Delete empty unit tests files, remove 1- and 1+, reorder IN: lines in a lot of places...
[factor.git] / extra / project-euler / 027 / 027.factor
index 2bc7894684d53f86891a04cef5b20aa5d07d25d2..f97d8e9e0ddd700dc6b2b339a817d980c0d36908 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (c) 2008 Aaron Schaefer.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.primes project-euler.common sequences ;
+USING: kernel math math.primes math.ranges project-euler.common sequences ;
 IN: project-euler.027
 
 ! http://projecteuler.net/index.php?section=problems&id=27
@@ -46,21 +46,21 @@ IN: project-euler.027
 <PRIVATE
 
 : source-027 ( -- seq )
-    1000 [ prime? ] subset [ dup [ neg ] map append ] keep
-    cartesian-product [ first2 < ] subset ;
+    1000 [0,b) [ prime? ] filter [ dup [ neg ] map append ] keep
+    cartesian-product [ first2 < ] filter ;
 
 : quadratic ( b a n -- m )
     dup sq -rot * + + ;
 
 : (consecutive-primes) ( b a n -- m )
-    3dup quadratic prime? [ 1+ (consecutive-primes) ] [ 2nip ] if ;
+    3dup quadratic prime? [ 1 + (consecutive-primes) ] [ 2nip ] if ;
 
 : consecutive-primes ( a b -- m )
     swap 0 (consecutive-primes) ;
 
 : max-consecutive ( seq -- elt n )
     dup [ first2 consecutive-primes ] map dup supremum
-    over index [ swap nth ] curry 2apply ;
+    over index [ swap nth ] curry bi@ ;
 
 PRIVATE>
 
@@ -68,8 +68,8 @@ PRIVATE>
     source-027 max-consecutive drop product ;
 
 ! [ euler027 ] 100 ave-time
-! 687 ms run / 23 ms GC ave time - 100 trials
+! 111 ms ave run time - 6.07 SD (100 trials)
 
 ! TODO: generalize max-consecutive/max-product (from #26) into a new word
 
-MAIN: euler027
+SOLUTION: euler027