]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/project-euler/022/022.factor
Delete empty unit tests files, remove 1- and 1+, reorder IN: lines in a lot of places...
[factor.git] / extra / project-euler / 022 / 022.factor
index f523f586c51a243af3d16a19229b4bca72c63e89..b548591b5e3ba6eff89a05315a6afd883169bfc0 100644 (file)
@@ -1,7 +1,7 @@
 ! Copyright (c) 2007 Aaron Schaefer.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: combinators.lib io io.files kernel math math.parser namespaces sequences
-    sorting splitting strings system vocabs ;
+USING: ascii io.encodings.ascii io.files kernel math project-euler.common
+    sequences sorting splitting ;
 IN: project-euler.022
 
 ! http://projecteuler.net/index.php?section=problems&id=22
@@ -27,24 +27,12 @@ IN: project-euler.022
 
 <PRIVATE
 
-: (source-022) ( -- path )
-    [
-        "project-euler.022" vocab-root ?resource-path %
-        os "windows" = [
-            "\\project-euler\\022\\names.txt" %
-        ] [
-            "/project-euler/022/names.txt" %
-        ] if
-    ] "" make ;
-
 : source-022 ( -- seq )
-    (source-022) file-contents [ quotable? ] subset "," split ;
-
-: alpha-value ( str -- n )
-    string>digits [ 9 - ] sigma ;
+    "resource:extra/project-euler/022/names.txt"
+    ascii file-contents [ quotable? ] filter "," split ;
 
 : name-scores ( seq -- seq )
-    dup length [ 1+ swap alpha-value * ] 2map ;
+    [ 1 + swap alpha-value * ] map-index ;
 
 PRIVATE>
 
@@ -52,9 +40,6 @@ PRIVATE>
     source-022 natural-sort name-scores sum ;
 
 ! [ euler022 ] 100 ave-time
-! 59 ms run / 1 ms GC ave time - 100 trials
-
-! source-022 [ natural-sort name-scores sum ] curry 100 ave-time
-! 45 ms run / 1 ms GC ave time - 100 trials
+! 74 ms ave run time - 5.13 SD (100 trials)
 
-MAIN: euler022
+SOLUTION: euler022