]> gitweb.factorcode.org Git - factor.git/commitdiff
project-euler.186: simpler with if instead of 2unless?.
authorJohn Benediktsson <mrjbq7@gmail.com>
Thu, 15 Feb 2018 03:46:26 +0000 (19:46 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Thu, 15 Feb 2018 03:46:26 +0000 (19:46 -0800)
Not sure why I'm still working on this.

extra/project-euler/186/186.factor

index 0a6179acee605c7b8d9cfe13c9af78306c6c2352..18d3bf1dd2e724b22f41c680c9182576082a7b84 100644 (file)
@@ -47,16 +47,14 @@ IN: project-euler.186
 : next ( lag -- n )
     [ [ first dup ] [ 31 swap nth ] bi + 1000000 rem ] keep circular-push ;
 
-: 2unless? ( x y ?quot quot -- )
-    [ 2keep rot [ 2drop ] ] dip if ; inline
-
-: (p186) ( generator counter unionfind -- counter )
+: (euler186) ( generator counter unionfind -- counter )
     524287 over equiv-set-size 990000 < [
         pick [ next ] [ next ] bi
-        [ = ] [
-            pick equate
-            [ 1 + ] dip
-        ] 2unless? (p186)
+        2dup = [
+            2drop
+        ] [
+            pick equate [ 1 + ] dip
+        ] if (euler186)
     ] [
         drop nip
     ] if ;
@@ -65,7 +63,7 @@ IN: project-euler.186
     <iota> <disjoint-set> [ [ add-atom ] curry each ] keep ;
 
 : euler186 ( -- n )
-    <generator> 0 1000000 <relation> (p186) ;
+    <generator> 0 1000000 <relation> (euler186) ;
 
 ! [ euler186 ] 10 ave-time
 ! 18572 ms ave run time - 796.87 SD (10 trials)