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
-
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 called1 + n_iters
times. -
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
Built Distribution
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 |