]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/project-euler/038/038.factor
factor: trim using lists
[factor.git] / extra / project-euler / 038 / 038.factor
index cbe6f2363c793aff1bae155230035d5b6a1221e9..dadde963ec0f991747aa80c529d8f11f051cc4ea 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (c) 2008 Aaron Schaefer.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.parser math.ranges project-euler.common sequences ;
+USING: kernel math ranges project-euler.common sequences ;
 IN: project-euler.038
 
 ! http://projecteuler.net/index.php?section=problems&id=38
@@ -36,9 +36,9 @@ IN: project-euler.038
 
 : (concat-product) ( accum n multiplier -- m )
     pick length 8 > [
-        2drop 10 swap digits>integer
+        2drop digits>number
     ] [
-        [ * number>digits over push-all ] 2keep 1+ (concat-product)
+        [ * number>digits append! ] 2keep 1 + (concat-product)
     ] if ;
 
 : concat-product ( n -- m )
@@ -47,9 +47,9 @@ IN: project-euler.038
 PRIVATE>
 
 : euler038 ( -- answer )
-    9123 9876 [a,b] [ concat-product ] map [ pandigital? ] subset supremum ;
+    9123 9876 [a..b] [ concat-product ] map [ pandigital? ] filter supremum ;
 
 ! [ euler038 ] 100 ave-time
-! 37 ms run / 1 ms GC ave time - 100 trials
+! 11 ms ave run time - 1.5 SD (100 trials)
 
-MAIN: euler038
+SOLUTION: euler038