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 ;