]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/project-euler/040/040.factor
factor: trim using lists
[factor.git] / extra / project-euler / 040 / 040.factor
index 89845592655b8a691522dc5966937a6b6cc3b401..acbd983f6f512203cd52cb5f3440852267d23855 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 sequences strings ;
+USING: kernel math math.parser sequences project-euler.common ;
 IN: project-euler.040
 
 ! http://projecteuler.net/index.php?section=problems&id=40
@@ -28,7 +28,7 @@ IN: project-euler.040
 
 : (concat-upto) ( n limit str -- str )
     2dup length > [
-        pick number>string over push-all rot 1+ -rot (concat-upto)
+        pick number>string append! [ 1 + ] 2dip (concat-upto)
     ] [
         2nip
     ] if ;
@@ -37,7 +37,7 @@ IN: project-euler.040
     SBUF" " clone 1 -rot (concat-upto) ;
 
 : nth-integer ( n str -- m )
-    [ 1- ] dip nth 1string 10 string>integer ;
+    [ 1 - ] dip nth digit> ;
 
 PRIVATE>
 
@@ -46,6 +46,6 @@ PRIVATE>
     [ swap nth-integer ] with map product ;
 
 ! [ euler040 ] 100 ave-time
-! 1002 ms run / 43 ms GC ave time - 100 trials
+! 444 ms ave run time - 23.64 SD (100 trials)
 
-MAIN: euler040
+SOLUTION: euler040