]> gitweb.factorcode.org Git - factor.git/commitdiff
Cleanup PE solutions and formatting
authorAaron Schaefer <aaron@elasticdog.com>
Sat, 15 Nov 2008 20:43:21 +0000 (15:43 -0500)
committerAaron Schaefer <aaron@elasticdog.com>
Sat, 15 Nov 2008 20:43:21 +0000 (15:43 -0500)
extra/project-euler/203/203-tests.factor
extra/project-euler/203/203.factor
extra/project-euler/215/215.factor
extra/project-euler/project-euler.factor

index 6c49c2f95813465254b3350ef11b2edc013886ff..4922f9a8ccebe96cb8187321d20beb67e71c937d 100644 (file)
@@ -1,5 +1,5 @@
-USING: project-euler.203 tools.test ;
+USING: project-euler.203 project-euler.203.private tools.test ;
 IN: project-euler.203.tests
 
 [ 105 ] [ 8 solve ] unit-test
-[ 34029210557338 ] [ 51 solve ] unit-test
+[ 34029210557338 ] [ euler203 ] unit-test
index 9a2916649eb71c864327e01615291f8596ed640c..f2b5a2e212e10ba6791686ab74d4a4dda141b98b 100644 (file)
@@ -1,9 +1,64 @@
+! Copyright (c) 2008 Eric Mertens.
+! See http://factorcode.org/license.txt for BSD license.
 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 ;
+! http://projecteuler.net/index.php?section=problems&id=203
+
+! DESCRIPTION
+! -----------
+
+! The binomial coefficients nCk can be arranged in triangular form, Pascal's
+! triangle, like this:
+
+!                   1
+!                 1   1
+!               1   2   1
+!             1   3   3   1
+!           1   4   6   4   1
+!         1   5  10  10   5   1
+!       1   6  15  20  15   6   1
+!     1   7  21  35  35  21   7   1
+!               .........
+
+! It can be seen that the first eight rows of Pascal's triangle contain twelve
+! distinct numbers: 1, 2, 3, 4, 5, 6, 7, 10, 15, 20, 21 and 35.
+
+! A positive integer n is called squarefree if no square of a prime divides n.
+! Of the twelve distinct numbers in the first eight rows of Pascal's triangle,
+! all except 4 and 20 are squarefree. The sum of the distinct squarefree numbers
+! in the first eight rows is 105.
+
+! Find the sum of the distinct squarefree numbers in the first 51 rows of
+! Pascal's triangle.
+
+
+! SOLUTION
+! --------
+
+<PRIVATE
+
+: 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 all-unique? ;
+
+: solve ( n -- n )
+    generate [ squarefree ] filter sum ;
+
+PRIVATE>
+
+: euler203 ( -- n )
+    51 solve ;
+
+! [ euler203 ] 100 ave-time
+! 12 ms ave run time - 1.6 SD (100 trials)
+
+MAIN: euler203
index fc09b375159af11147280ee114a9030d4d85bfd8..82d6a31c6691c744a3ccaa83f6c844d5cd088f13 100644 (file)
@@ -9,7 +9,7 @@ IN: project-euler.215
 ! -----------
 
 ! Consider the problem of building a wall out of 2x1 and 3x1 bricks
-! (horizontalvertical dimensions) such that, for extra strength, the gaps
+! (horizontal x vertical dimensions) such that, for extra strength, the gaps
 ! between horizontally-adjacent bricks never line up in consecutive layers,
 ! i.e. never form a "running crack".
 
index 9549505bf603b79ed3ec15feb68119d46a46ad96..60d35f27ad167e410b26a2b63770b12203e117d5 100644 (file)
@@ -20,7 +20,7 @@ USING: definitions io io.files kernel math math.parser
     project-euler.097 project-euler.100 project-euler.116 project-euler.117
     project-euler.134 project-euler.148 project-euler.150 project-euler.151
     project-euler.164 project-euler.169 project-euler.173 project-euler.175
-    project-euler.186 project-euler.190 project-euler.215 ;
+    project-euler.186 project-euler.190 project-euler.203 project-euler.215 ;
 IN: project-euler
 
 <PRIVATE