TupperGen.frink

View or download TupperGen.frink in plain text format


// This program was part of an April Fool's joke that I posted in April 2011.
// see http://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[]
   


View or download TupperGen.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 17592 days, 15 hours, 36 minutes ago.