]> gitweb.factorcode.org Git - factor.git/commitdiff
Fix short circuit usage in Project Euler solutions
authorAaron Schaefer <aaron@elasticdog.com>
Thu, 6 Nov 2008 06:41:24 +0000 (01:41 -0500)
committerAaron Schaefer <aaron@elasticdog.com>
Thu, 6 Nov 2008 06:41:24 +0000 (01:41 -0500)
extra/project-euler/014/014.factor
extra/project-euler/021/021.factor
extra/project-euler/036/036.factor
extra/project-euler/043/043.factor
extra/project-euler/052/052.factor

index 93ed0c77541fac85278d4e6e8f9004c942c84e07..3b812cf242ae77c77211bd5439d120701db31994 100644 (file)
@@ -58,7 +58,7 @@ PRIVATE>
 <PRIVATE
 
 : worth-calculating? ( n -- ? )
-    { [ dup 1- 3 mod zero? ] [ dup 1- 3 / even? ] } 0&& nip ;
+    1- 3 { [ mod zero? ] [ / even? ] } 2&& ;
 
 PRIVATE>
 
index 2e2f6a6453e50a61c653b9b3342e40c4be6b21c7..55060a7c71aeb442004aede598864f58921fb047 100644 (file)
@@ -27,7 +27,7 @@ IN: project-euler.021
 
 : amicable? ( n -- ? )
     dup sum-proper-divisors
-    { [ 2dup = not ] [ 2dup sum-proper-divisors = ] } 0&& 2nip ;
+    { [ = not ] [ sum-proper-divisors = ] } 2&& ;
 
 : euler021 ( -- answer )
     10000 [1,b] [ dup amicable? [ drop 0 ] unless ] sigma ;
index 02d9372a8bcf5ade185c35d871bb7eae5784fbd1..f5afeceb21fd3858af6b727fa875f5f5492a5a5a 100644 (file)
@@ -26,8 +26,7 @@ IN: project-euler.036
 <PRIVATE
 
 : both-bases? ( n -- ? )
-    { [ dup palindrome? ]
-      [ dup >bin dup reverse = ] } 0&& nip ;
+    { [ palindrome? ] [ >bin dup reverse = ] } 1&& ;
 
 PRIVATE>
 
index 28dc0b8bd6e1afff6d746b4c958e4473293735b0..268a6becfb4d8d377a19a3ca55c78bd91a5c49f2 100644 (file)
@@ -40,14 +40,14 @@ IN: project-euler.043
 
 : interesting? ( seq -- ? )
     {
-        [ 17 8 pick subseq-divisible? ]
-        [ 13 7 pick subseq-divisible? ]
-        [ 11 6 pick subseq-divisible? ]
-        [ 7 5 pick subseq-divisible? ]
-        [ 5 4 pick subseq-divisible? ]
-        [ 3 3 pick subseq-divisible? ]
-        [ 2 2 pick subseq-divisible? ]
-    } 0&& nip ;
+        [ 17 8 rot subseq-divisible? ]
+        [ 13 7 rot subseq-divisible? ]
+        [ 11 6 rot subseq-divisible? ]
+        [ 7  5 rot subseq-divisible? ]
+        [ 5  4 rot subseq-divisible? ]
+        [ 3  3 rot subseq-divisible? ]
+        [ 2  2 rot subseq-divisible? ]
+    } 1&& ;
 
 PRIVATE>
 
index cfbb718200ae2dd4155538a0bb8e94814d265926..5362a6e9b0dfd6cb3fcbc11e665345b3fb0a7a0b 100644 (file)
@@ -30,7 +30,7 @@ IN: project-euler.052
     [ number>digits natural-sort ] map all-equal? ;
 
 : candidate? ( n -- ? )
-    { [ dup odd? ] [ dup 3 mod zero? ] } 0&& nip ;
+    { [ odd? ] [ 3 mod zero? ] } 1&& ;
 
 : next-all-same ( x n -- n )
     dup candidate? [