Yes.
And depending how occasionally we're talking, I can code for some very fast solutions when the correctness requirements are low enough.
Alternately, if we want it to only be occasionally fast, I've got a very nice looking and very wrong algorithm for that, as well.