BedroomLAN

Tilde~A: Alexios' Homepage

Signature Befunge

Table of Contents

Περιεχόμενα

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.