Skip to content

Instantly share code, notes, and snippets.

@marshall
Last active November 27, 2018 12:09
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marshall/d30e45fec6cba8c029a95836d395c1b7 to your computer and use it in GitHub Desktop.
Save marshall/d30e45fec6cba8c029a95836d395c1b7 to your computer and use it in GitHub Desktop.
Tupper's self referential formula K-value generator from any bitmap

I blame Sunil

Explanation on Numberphile

$ ./tupper_k_generator.py kubos-logo.jpg
Tupper K: 4851370081043797069526117009366050436467169751191993569135606414438862155770371453584241289040123540835764290480748106579297469000745823841698473083200214756261314470995838411716498141137319883748891932220617163646559245337601667812194386638446130000791689630544645547109043549304112488869690412062712162943919296994357984460429601612633008740350419376958008239159705920690443436571886095990169981093140964956940930188836731629337704527351542629178213799422991411377275182604582346155731146214167261974801893205797483642065625014903535782819823

Test your number here! http://tuppers-formula.tk/

For reference, my company's logo (the test above) looks pretty cool in monochrome! Kubos Logo

#!/usr/bin/env python
# convert an arbitrary image to 106x17 monochrome and print the K value to see
# it in mapped by Tupper's self-referrential formula:
#
# https://en.wikipedia.org/wiki/Tupper%27s_self-referential_formula
import sys
from PIL import Image
img_size = (106, 17)
def gen_tupper_k(filename):
img = Image.open(filename)
img = img.resize(img_size)
img = img.convert(mode='1')
k = 0
# bit order uses cartesian coords, so count backward
for x in reversed(range(0, img_size[0])):
for y in range(0, img_size[1]):
val = img.getpixel((x, y)) & 1
k = (k << 1) | val
print 'Tupper K: %d' % (k * 17) # multiply final result by 17
def main():
if len(sys.argv) == 1:
print >>sys.stderr, "Usage %s [filename]" % sys.argv[0]
sys.exit(1)
gen_tupper_k(sys.argv[1])
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment