The simple algorithms are stuff like bugnav (walk in your desired direction until you see a wall then attempt to trace around it), but you'll find that even in something as simple as bugnav, there are a _ton_ of edgecases you have to account for in a discrete implementation that results in robots tracing around each other / stuck in infinite loops, etc.
Our 2012 bot uses a special implementation of the discrete tangentbug algorithm that allows us to precompute squares during rounds which we have extra bytecodes to spare[1]
It's probably _the_ most complex part of our codebase, and the person who wrote it doesn't even really understand how it works anymore.
[1] https://bitbucket.org/Cixelyn/bcode2012-bot/src/default/team...