Can someone explain to me how the following program calculates Pi from its own area? It's a winner entry of the International Obfuscated C Contest.
link:
http://www.cise.ufl.edu/~manuel/obfuscate/pi.c
#define _ F-->00 || F-OO--;
long F=00,OO=00;
main(){F_OO();printf("%1.3f\n", 4.*-F/OO/OO);}F_OO()
{
_-_-_-_
_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_
_-_-_-_
}
(The preceding white spaces in each line are deleted by the forum posting system, otherwise the program body looks like a perfect circle. Please do check the provided web link to look at the program.)
I find it amazing but don't understand. I'm pretty sure that F counts the number of "_" characters, and OO counts the number of lines, i.e. the size of the square. Therefore 4*F/OO/OO is an approximation for Pi. But I have no idea how F and OO are actually counted in the program.
(The "void" keyword is omitted from "void main" and "void F_OO", as permitted in traditional C)
Thanks in advance to anyone who takes the time and effort to analyse this puzzle for me.