Text this: Algorithmic diversity through semantic program comparison