]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/project-euler/052/052.factor
Delete empty unit tests files, remove 1- and 1+, reorder IN: lines in a lot of places...
[factor.git] / extra / project-euler / 052 / 052.factor
index 3f6487fb3eb3c5959ea05e2fd8f74e629a6df313..037cc87288420e13ab0823aaaef63ba22287663d 100644 (file)
@@ -1,6 +1,7 @@
 ! Copyright (c) 2008 Aaron Schaefer.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: combinators.lib kernel math project-euler.common sequences sorting ;
+USING: combinators.short-circuit kernel math math.functions
+    project-euler.common sequences sorting grouping ;
 IN: project-euler.052
 
 ! http://projecteuler.net/index.php?section=problems&id=52
@@ -23,20 +24,20 @@ IN: project-euler.052
 <PRIVATE
 
 : map-nx ( n x -- seq )
-    [ 1+ * ] with map ; inline
+    [ 1 + * ] with map ; inline
 
 : all-same-digits? ( seq -- ? )
     [ number>digits natural-sort ] map all-equal? ;
 
 : candidate? ( n -- ? )
-    { [ dup odd? ] [ dup 3 mod zero? ] } && nip ;
+    { [ odd? ] [ 3 divisor? ] } 1&& ;
 
 : next-all-same ( x n -- n )
     dup candidate? [
         2dup swap map-nx all-same-digits?
-        [ nip ] [ 1+ next-all-same ] if
+        [ nip ] [ 1 + next-all-same ] if
     ] [
-        1+ next-all-same
+        1 + next-all-same
     ] if ;
 
 PRIVATE>
@@ -45,6 +46,6 @@ PRIVATE>
     6 123456 next-all-same ;
 
 ! [ euler052 ] 100 ave-time
-! 403 ms run / 7 ms GC ave time - 100 trials
+! 92 ms ave run time - 6.29 SD (100 trials)
 
-MAIN: euler052
+SOLUTION: euler052