]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/math/transforms/bwt/bwt.factor
factor: trim using lists
[factor.git] / extra / math / transforms / bwt / bwt.factor
index 35844580e5b95dd0206340b1ce803dccd03aa75c..3572e083e0abb3878313750c9e2466a01088184a 100644 (file)
@@ -1,16 +1,17 @@
 ! Copyright (C) 2012 John Benediktsson
 ! See http://factorcode.org/license.txt for BSD license
-USING: assocs fry kernel sequences sequences.rotated sorting ;
+USING: accessors assocs kernel sequences sequences.rotated
+sorting ;
 IN: math.transforms.bwt
 
 ! Semi-efficient versions of Burrows-Wheeler Transform
 
-: bwt ( seq -- i newseq )
-    dup all-rotations natural-sort
-    [ [ sequence= ] with find drop ]
-    [ [ last ] rot map-as ] 2bi ;
+:: bwt ( seq -- i newseq )
+    seq all-rotations natural-sort
+    [ [ n>> 0 = ] find drop ] keep
+    [ last ] seq map-as ;
 
 : ibwt ( i newseq -- seq )
     [ length ]
-    [ <enum> sort-values '[ _ nth first2 ] ]
+    [ <enumerated> sort-values '[ _ nth first2 ] ]
     [ replicate-as ] tri nip ;