Skip to main content

Calculates plots for Tupper's Self-Referential Formula.

Project description

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.

Project details


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

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.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page