From 8ace93a75f9c62cc78b9569a6656724333589944 Mon Sep 17 00:00:00 2001 From: Eric Mertens Date: Mon, 10 Nov 2008 19:34:36 -0800 Subject: [PATCH] add project-euler.203 --- extra/project-euler/203/203-tests.factor | 5 +++++ extra/project-euler/203/203.factor | 9 +++++++++ 2 files changed, 14 insertions(+) create mode 100644 extra/project-euler/203/203-tests.factor create mode 100644 extra/project-euler/203/203.factor diff --git a/extra/project-euler/203/203-tests.factor b/extra/project-euler/203/203-tests.factor new file mode 100644 index 0000000000..6c49c2f958 --- /dev/null +++ b/extra/project-euler/203/203-tests.factor @@ -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 index 0000000000..9a2916649e --- /dev/null +++ b/extra/project-euler/203/203.factor @@ -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 ;