]> gitweb.factorcode.org Git - factor.git/commitdiff
grouping.extras: simplify <n-groups>
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 27 Oct 2023 18:35:46 +0000 (11:35 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 27 Oct 2023 18:35:46 +0000 (11:35 -0700)
extra/grouping/extras/extras.factor

index 0124cab66e750c303161287f1b6fce139e604944..ebb72db7b757ed56d7005ab6da3437c147444698 100644 (file)
@@ -61,14 +61,13 @@ PRIVATE>
     '[ dup _ call( x -- y ) (group-by) ] V{ } clone swap reduce ;
 
 :: <n-groups> ( seq n -- groups )
-    seq length :> len
-    len n /mod :> ( step rem! )
-    0 n [
+    seq length dup n assert-positive /mod :> ( len step j )
+    0 n [| i |
         dup len < [
-            dup step + rem zero? [ 1 + rem 1 - rem! ] unless
+            dup step + i j < [ 1 + ] when
             [ seq <slice> ] keep swap
         ] [ f ] if
-    ] replicate nip ;
+    ] map-integers nip ;
 
 : n-group ( seq n -- groups )
     [ <n-groups> ] map-like ;