// This program was part of an April Fool's joke that I posted in April 2011. // see https://futureboy.us/temp/pigraph.html // // This is an implementation of Tupper's "self-referential" formula in Frink. // See: // http://en.wikipedia.org/wiki/Tupper%27s_self-referential_formula // // This program reads in a (black and white) graphic from an image file // and converts it to a number that can be plotted with Tupper's formula, // appropriately modified for width and height. Note that the equation I use // below is actually a simplified version of Tupper's formula that just plots // each pixel directly. f = new image["file:copyright.png"] width = f.getWidth[] height = f.getHeight[] println["image is \$width x \$height"] num = 0 for x = width-1 to 0 step -1 for y = 0 to height-1 { num = num * 2 [r,g,b] = f.getPixel[x,y] if r < 1/2 num = num + 1 } num = num*height println["num is \$num"] // Now graph the number again just to make sure everything went right. g = new graphics for x=0 to width-1 for y = num to num+height-1 { // v = floor[(floor[y/height] 2^(-height floor[x] - floor[y] mod height)) mod 2] v = ((y/height) * 2^(-height x - (y mod height))) mod 2 if v >= 1 g.fillRectCenter[x,-y,1,1] } g.show[]