Here is a quick post to get me back into the swing of blogging.
I was looking through an old post on StackOverflow about clever functional code, and the best answer, given by “yairchu” was a nice version of the Burrows-Wheeler Transform, which is an algorithm for permuting a string such that it can be compressed more effectively by other algorithms. The code posted was (import Data.List assumed):
1 2 3 4 5 | |
I saw I could improve/shorten this in a couple of obvious ways and came up with this:
1 2 3 4 | |
Still unsatisfied and even more obsessed I came up with this final, prettiest version, before forcing myself to give it up already:
1 2 3 4 | |
Unfortunately, this last version will croak if your string happens to look like “111111” or “cAbcAb” because sort will keep trying to compare infinites lists.
Update: I did a short post on the Move To Front transform as a follow-up to this post.