]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/project-euler/035/035.factor
factor: trim using lists
[factor.git] / extra / project-euler / 035 / 035.factor
old mode 100755 (executable)
new mode 100644 (file)
index cec9bc6..30a4f6d
@@ -1,7 +1,6 @@
 ! Copyright (c) 2008 Aaron Schaefer.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.combinatorics math.parser math.primes
-    project-euler.common sequences sequences.lib sets ;
+USING: kernel math math.primes project-euler.common sequences ;
 IN: project-euler.035
 
 ! http://projecteuler.net/index.php?section=problems&id=35
@@ -28,7 +27,7 @@ IN: project-euler.035
 
 : possible? ( seq -- ? )
     dup length 1 > [
-        dup { 0 2 4 5 6 8 } diff =
+        [ even? ] none?
     ] [
         drop t
     ] if ;
@@ -38,14 +37,14 @@ IN: project-euler.035
 
 : (circular?) ( seq n -- ? )
     dup 0 > [
-        2dup rotate 10 digits>integer
-        prime? [ 1- (circular?) ] [ 2drop f ] if
+        2dup rotate digits>number
+        prime? [ 1 - (circular?) ] [ 2drop f ] if
     ] [
         2drop t
     ] if ;
 
 : circular? ( seq -- ? )
-    dup length 1- (circular?) ;
+    dup length 1 - (circular?) ;
 
 PRIVATE>
 
@@ -53,9 +52,9 @@ PRIVATE>
     source-035 [ possible? ] filter [ circular? ] count ;
 
 ! [ euler035 ] 100 ave-time
-! 904 ms run / 86 ms GC ave time - 100 trials
+! 538 ms ave run time - 17.16 SD (100 trials)
 
 ! TODO: try using bit arrays or other methods outlined here:
 !     http://home.comcast.net/~babdulbaki/Circular_Primes.html
 
-MAIN: euler035
+SOLUTION: euler035