2012-09-09 14:38:59 -04:00
|
|
|
! Copyright (C) 2012 John Benediktsson
|
|
|
|
! See http://factorcode.org/license.txt for BSD license
|
2015-04-28 22:28:14 -04:00
|
|
|
USING: assocs fry kernel sequences sequences.rotated sorting ;
|
2012-09-09 14:38:59 -04:00
|
|
|
IN: math.transforms.bwt
|
|
|
|
|
2015-04-28 22:28:14 -04:00
|
|
|
! Semi-efficient versions of Burrows-Wheeler Transform
|
2012-09-09 14:38:59 -04:00
|
|
|
|
2015-04-28 22:28:14 -04:00
|
|
|
: bwt ( seq -- i newseq )
|
|
|
|
dup all-rotations natural-sort
|
|
|
|
[ [ sequence= ] with find drop ]
|
|
|
|
[ [ last ] rot map-as ] 2bi ;
|
2012-09-09 14:38:59 -04:00
|
|
|
|
2015-04-28 22:28:14 -04:00
|
|
|
: ibwt ( i newseq -- seq )
|
|
|
|
[ length ]
|
|
|
|
[ <enum> sort-values '[ _ nth first2 ] ]
|
|
|
|
[ replicate-as ] tri nip ;
|