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 hashes)

Uploaded Source

Built Distribution

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

Uploaded CPython 3.7m macOS 11.0+ x86-64

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