]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/project-euler/151/151.factor
Harmonize spelling
[factor.git] / extra / project-euler / 151 / 151.factor
index 66c5a6301edad0832b9f3e56a77db20bbc73d1e1..45777ae56aba66981401d0657a19f67953f320d6 100644 (file)
@@ -9,7 +9,7 @@ IN: project-euler.151
 ! -----------
 
 ! A printing shop runs 16 batches (jobs) every week and each batch requires a
-! sheet of special colour-proofing paper of size A5.
+! sheet of special color-proofing paper of size A5.
 
 ! Every Monday morning, the foreman opens a new envelope, containing a large
 ! sheet of the special paper with size A1.
@@ -39,11 +39,11 @@ SYMBOL: table
 
 : (pick-sheet) ( seq i -- newseq )
     [
-        <=> sgn
+        <=>
         {
-            { -1 [ ] }
-            {  0 [ 1- ] }
-            {  1 [ 1+ ] }
+            { +lt+ [ ] }
+            { +eq+ [ 1 - ] }
+            { +gt+ [ 1 + ] }
         } case
     ] curry map-index ;
 
@@ -59,10 +59,10 @@ DEFER: (euler151)
 : (euler151) ( x -- y )
     table get [ {
         { { 0 0 0 1 } [ 0 ] }
-        { { 0 0 1 0 } [ { 0 0 0 1 } (euler151) 1+ ] }
-        { { 0 1 0 0 } [ { 0 0 1 1 } (euler151) 1+ ] }
-        { { 1 0 0 0 } [ { 0 1 1 1 } (euler151) 1+ ] }
-        [ [ dup length [ pick-sheet ] with map sum ] [ sum ] bi / ]
+        { { 0 0 1 0 } [ { 0 0 0 1 } (euler151) 1 + ] }
+        { { 0 1 0 0 } [ { 0 0 1 1 } (euler151) 1 + ] }
+        { { 1 0 0 0 } [ { 0 1 1 1 } (euler151) 1 + ] }
+        [ [ dup length <iota> [ pick-sheet ] with map-sum ] [ sum ] bi / ]
      } case ] cache ;
 
 : euler151 ( -- answer )
@@ -71,8 +71,6 @@ DEFER: (euler151)
         { 1 1 1 1 } (euler151)
     ] with-scope ;
 
-! TODO: doesn't work currently, problem in area of 'with map' in (euler151)
-
 ! [ euler151 ] 100 ave-time
 ! ? ms run time - 100 trials