The weird block of text to the right of my most common email/Usenet signature is actually a program in the Internet's darling esoteric programming language Befunge (‘darling’ taken with a pinch of salt — it's not as feared as the insanity-inducing pit of horrors that is INTERCAL). Here's the signature:
=----------------------------------------------= 64*>:00p258**44$$^>4$,1-:#v_v | Alexios Chouchoulas, the Unpronounceable One | 4$#^; BEFUNGE97 ;^#_@#:-1$>#< | http://www.vennea.demon.co.uk/ | 4*2-*26g00*:-*58:<vg3/*48+*:$ =-----=[ `Eimai mia micri soupiera' ]=-----= #@@@ooo:::... . . .
The block of characters to the right is a Befunge 97 program (it even has a comment in it saying so). It's been slightly compacted and made just a bit more obfuscated than it had to, but I like it.
Source
Here's the isolated Befunge 97 code:
64*>:00p258**44$$^>4$,1-:#v_v
4$#^; BEFUNGE97 ;^#_@#:-1$>#<
4*2-*26g00*:-*58:<vg3/*48+*:$
#@@@ooo:::... . . .
Output
Executed with a suitable Befunge 97 interpreter on an 80-column display, it prints this:
. .. .. . . . ........... . . . . .. ....... .. . . . . . ................... . . . . . . .....:::::::::::::::..... . . . . ...::::::ooooooooooo::::::... . . ...:::::ooooooooooooooooo:::::... . . ...:::oooooo@@@@@@@@@@@oooooo:::... . . . . ...:::ooooo@@@@@@@@@@@@@@@ooooo:::... . . . . ...:::oooo@@@@@@@@@@@@@@@@@@@oooo:::... . . . . ..:::oooo@@@@@@@#######@@@@@@@oooo:::.. . . . . . ...:::ooo@@@@@@###########@@@@@@ooo:::... . . . . ...:::ooo@@@@@@###########@@@@@@ooo:::... . . . . ...:::ooo@@@@@@###########@@@@@@ooo:::... . . . . . ..:::oooo@@@@@@@#######@@@@@@@oooo:::.. . . . . ...:::oooo@@@@@@@@@@@@@@@@@@@oooo:::... . . . . ...:::ooooo@@@@@@@@@@@@@@@ooooo:::... . . . . ...:::oooooo@@@@@@@@@@@oooooo:::... . . ...:::::ooooooooooooooooo:::::... . . ...::::::ooooooooooo::::::... . . . . .....:::::::::::::::..... . . . . . . ................... . . . . . .. ....... .. . . . . ........... . .
Theory of Operation
The thing calculates the distance of each character from the centre of the screen using the Pythagorean theorem (except without the square root), then picks a character to draw. The characters used for drawing are on the bottom row of the program. They can all be redefined except for two: the one below the <
sign on line 3 must be either a space or a caret (^
), and the one below the v
must either be a space of a v
.
It's 29×4 bytes including data, with space to spare, but it only works on 80-column displays as it doesn't print any newline characters.
You can easily adjust it. Actually finding the constants is left as an exercise for the advanced (and somewhat insane) reader.