Skip to main content

Python interface for game of life

Project description

Python interface for Game of Life

Python wrapper for C implementation of Conway's Game of Life algorithm.

This only provides low-level utilities. It is intended to be used as a dependency for higher-level pure Python packages; as of this update, they are:

life-web-ui Web UI for Conway Game of Life

Installation

Use PyPi package conway-life

python3 -m pip install --upgrade conway-life

Design notes

None of the methods allocate any Python objects; output objects must be created by caller. This both simplifies memory management and makes it possible to avoid unneeded garbage collection for large objects.

API

run(width, height, n_threads, n_iters, pos_start, pos_end, calllback)

width: Width of the board; integer
height: Height of the board; integer
n_threads: Number of worker threads (not yet supported); integer
n_iters: Number of iterations to run; integer
pos_start: Initial position; boolean list of size width x height
pos_end: (Output) Final position; boolean list of size width x height. Must be pre-allocated.
callback: Iteration calllback, or None (see below)

return value: number of actually executed iterations (never more than n_iters, but could be less, see below)

callback(n_iter, count, bhash, pos_ptr, fin)

n_iter: current iteration (see below); integer
count: count of cells; integer
bhash: hash of current position; integer
pos_ptr: internal memory pointer to the current position; integer. Method read_ptr can be used to extract the position
fin: 1 if this is final iteration, 0 if not

return value: None or integer; value 1 will trigger iterations to stop immediately.

Notes

  1. callback (if defined) is called before first iteration, and then again after every iterations, including the last (where fin=1). Therefore, normally callback method is called 1 + n_iters times.

  2. However this method also detects loops and if your sequence deteriorates to a loop, it will cut it short; fin would still be set to 1 on the last iteration only regardless. Hash values used in loop detection is passed to the callback.

read_ptr(width, height, pos_ptr, position)

width: Width of the board; integer
height: Height of the board; integer
pos_ptr: Internal memory pointer returned in a callback (see method run); integer
position: (Output) Intermediary position; boolean list of size width x height. Must be pre-allocated.

return value: 1 on success

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

conway-life-0.1.4.1.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

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

conway_life-0.1.4.1-cp37-cp37m-macosx_11_0_x86_64.whl (8.6 kB view details)

Uploaded CPython 3.7mmacOS 11.0+ x86-64

File details

Details for the file conway-life-0.1.4.1.tar.gz.

File metadata

  • Download URL: conway-life-0.1.4.1.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.5.0.1 requests/2.23.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.7.11

File hashes

Hashes for conway-life-0.1.4.1.tar.gz
Algorithm Hash digest
SHA256 754f1cd18880655904cd6b927c6c91eca28edb1c741111ea949c74303b90c420
MD5 d08866021a651e09f05cc501565c8db4
BLAKE2b-256 fa693695bf41f954dd5b3cda2b311df2c0a28d9b9c53e3a12879213a858b5780

See more details on using hashes here.

File details

Details for the file conway_life-0.1.4.1-cp37-cp37m-macosx_11_0_x86_64.whl.

File metadata

  • Download URL: conway_life-0.1.4.1-cp37-cp37m-macosx_11_0_x86_64.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: CPython 3.7m, macOS 11.0+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.5.0.1 requests/2.23.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.7.11

File hashes

Hashes for conway_life-0.1.4.1-cp37-cp37m-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 0809a6ba4d9f4d00fef46acb72b5c513d982a3524fe7f1b8e749d478097206cf
MD5 7ad1841c848ea8c26ced2ba195bb898c
BLAKE2b-256 fe39e67e66ee5df11c552980d528330b547bec44c8f8f43f48a939de1df06403

See more details on using hashes here.

Supported by

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