Skip to main content

Tupper's Self-Referential Formula plotter

This Python package calculates and plots Tupper's Self-Referential Formula.

I've written about the formula and this project at Tupper’s Self-Referential Formula in Python.

The video that influenced this whole thing is here: https://www.youtube.com/watch?v=_s5RFgd59ao

        █                   █                █ ██ █     █                █  █ █     █    █ ██ █      █   █
        █                   █ █      █       █  █ █     █                █  █ █     █    █  █ █      █   █
██      █                  █  █      █    ██ █  █ █ █ █ █ ██ ████  ███ ███ █  █ █ █ █    █  █  █      █  █
 █      █                  █  █  █ █ █       █ █  █  █  █    █ █ █ █ █ █ █ █  █ █ █ █    █ █   █      █  █
 █      █                  █  █  █ █ █       █ █  █ █ █ █    █ █ █ ███ ███ █  █  █  █    █ █   █      █  █
 █      █               █ █   █   █  █  ██        █     █                  █  █ █   █  █       █   ██  █ █
███   █ █               █ █   █  █   █ █  █       █     █                   █ █     █  █      █   █  █ █ █
     █  █ ██ █   ██   ███ █   █      █   █        ███ ███                   █ ███ ███ █       █     █  █ █
███ █   █ █ █ █ █  █ █  █ █   █ ████ █  █                                                          █   █ █
     █  █ █ █ █ █  █ █  █ █   █      █ █                                                          █    █ █
██    █ █ █ █ █  ██   ███ █   █ █ ██ █ ████                                                       ████ █ █
  █     █                 █   █ █  █ █                                                          █      █ █
 █      █                  █  █ █  █ █                                                          █     █  █
█       █                  █  █ █ █  █                                                         █      █  █
███     █                  █  █ █ █  █                                                                █  █
        █                   █ █      █                                                               █   █
        ███                 █ ███  ███                                                               █ ███

Requirements

  • Python 3

Installation

pip3 install tupper

Console usage

python3 -m tupper

Optional arguments:

  • --help -- show usage instructions.
  • --k <number> -- the value of k to plot.
  • --true <string> -- the string to print for truthy points.
  • --false <string> -- the string to print for falsy points.
  • --export <filename> -- export the (x, y) coordinates and their truthy solution to a CSV file.

If you don't specify k then k =

9609393799189588849716729621278527547150043396601293066515055192717028023952664
2468964284217435071812126715378277062335599323728087414430789132596394133772348
7857735749823926629715517173716995165232890538221612403238855866184013235585136
0488286933379024914542292886670810961844960917051834540678277315517054053816273
8096760256562501698148208341878316384911559022561000365235137034387446184837873
7238198224849863465033159410054974700593138339226497249461751545728366702369745
461014655997933798537483143786841806593422227898388722980000748404719

Code usage

Solver class

To solve ad-hoc (x, y) points, import the Solver class and call the solve(x, y) function:

from tupper import Solver
# ...
s = Solver()
b = s.solve(x, y)

x() and y() functions are provided for yielding the coordinates of a graph:

from tupper import Solver
# ...
s = Solver()
k = 960939379918958...
for y in s.y(k):
    for x in s.x():
        b = s.solve(x, y)

StringPlotter class

StringPlotter exposes two functions for rendering graphs as text.

row() yields the characters for any given row:

from tupper import StringPlotter
# ...
sp = StringPlotter(true_mark="x", false_mark=" ")
k = 960939379918958...
for c in sp.row(k):
    print(c, end="")

graph() yields the characters for the entire graph, including newlines at the end of each row:

from tupper import StringPlotter
# ...
sp = StringPlotter(true_mark="x", false_mark=" ")
k = 960939379918958...
for c in sp.graph(k):
    print(c, end="")

Test data

The test_data directory contains CSV files for testing the calculation.

Each file contains three columns:

  1. The x coordinate.
  2. The y coordinate.
  3. The expected true/false solution.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tupper-0.10.1.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tupper-0.10.1-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file tupper-0.10.1.tar.gz.

File metadata

  • Download URL: tupper-0.10.1.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for tupper-0.10.1.tar.gz
Algorithm Hash digest
SHA256 817c46616eab3be06b81d342796a422d4f1564e3a59036e1cf10371960ac2d93
MD5 43996acb338765738dd5e933d7cf6eb2
BLAKE2b-256 4bb69ea9933ef31f9544b55d23666f768a401a60d1836dc0c57b5c8e910d507a

See more details on using hashes here.

File details

Details for the file tupper-0.10.1-py3-none-any.whl.

File metadata

  • Download URL: tupper-0.10.1-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for tupper-0.10.1-py3-none-any.whl
Algorithm Hash digest
SHA256 02c267fdaeef61f52f004d30160bacd5da3f4bd70f090b65abf30671e834fbd7
MD5 3fd2adc00a7293629da315ac265f06ef
BLAKE2b-256 b9c2a47f062ac37d0ffb05956a9fd062e38ea52279944d77e26b9e9e707d1fdf

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.10.1 This release

2 files

0.9.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page