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 (sans 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.



Add new comment