]> gitweb.factorcode.org Git - factor.git/commitdiff
add project-euler.203
authorEric Mertens <emertens@gmail.com>
Tue, 11 Nov 2008 03:34:36 +0000 (19:34 -0800)
committerEric Mertens <emertens@gmail.com>
Tue, 11 Nov 2008 03:34:36 +0000 (19:34 -0800)
extra/project-euler/203/203-tests.factor [new file with mode: 0644]
extra/project-euler/203/203.factor [new file with mode: 0644]

diff --git a/extra/project-euler/203/203-tests.factor b/extra/project-euler/203/203-tests.factor
new file mode 100644 (file)
index 0000000..6c49c2f
--- /dev/null
@@ -0,0 +1,5 @@
+USING: project-euler.203 tools.test ;
+IN: project-euler.203.tests
+
+[ 105 ] [ 8 solve ] unit-test
+[ 34029210557338 ] [ 51 solve ] unit-test
diff --git a/extra/project-euler/203/203.factor b/extra/project-euler/203/203.factor
new file mode 100644 (file)
index 0000000..9a29166
--- /dev/null
@@ -0,0 +1,9 @@
+USING: fry kernel math math.primes.factors sequences sets ;
+IN: project-euler.203
+
+: iterate ( n initial quot -- results ) swapd '[ @ dup ] replicate nip ; inline
+: (generate) ( seq -- seq ) [ 0 prefix ] [ 0 suffix ] bi [ + ] 2map ;
+: generate ( n -- seq ) 1- { 1 } [ (generate) ] iterate concat prune ;
+: squarefree ( n -- ? ) factors duplicates empty? ;
+: solve ( n -- n ) generate [ squarefree ] filter sum ;
+: euler203 ( -- n ) 51 solve ;