thearn / game-of-life

Simple Python implementation of Conway's game of life and other cellular automata, computed using numpy.fft
Apache License 2.0
183 stars 52 forks source link

Make conway updating considerably faster #6

Open AlexGreason opened 6 years ago

AlexGreason commented 6 years ago

It is redundant to independently check if b is 3 and state is 1, and if so set c to 1, and check if b is 3 and state is 0, and if so set c to 1. Fold these into one check. Additionally, to reduce number of array lookups, fold the remaining two operations into one. using a bitwise or Thirdly, in newer numpy versions numpy.where() is not necessary in this case, and is slower than using the array[array condition] syntax

EDIT: correction to the "revert convolution change" commit message, it turns out that if you just shift the filter to the up-left by one the scipy.signal convolution method works. Still not no-changes compatible with the other code so not including.