/usr/share/doc/python-arrayfire-doc/examples/graphics/conway.py is in python-arrayfire-doc 3.3.20160624-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | #!/usr/bin/python
#######################################################
# Copyright (c) 2015, ArrayFire
# All rights reserved.
#
# This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at:
# http://arrayfire.com/licenses/BSD-3-Clause
########################################################
import arrayfire as af
import array
from time import time
h_kernel = array.array('f', (1, 1, 1, 1, 0, 1, 1, 1, 1))
reset = 500
game_w = 128
game_h = 128
fps = 30
print("Example demonstrating conway's game of life using arrayfire")
print("The conway_pretty example visualizes all the states in Conway")
print("Red : Cells that have died due to under population" )
print("Yellow: Cells that continue to live from previous state" )
print("Green : Cells that are new as a result of reproduction" )
print("Blue : Cells that have died due to over population" )
print("This examples is throttled to 30 FPS so as to be a better visualization")
simple_win = af.Window(512, 512, "Conway's Game of Life - Current State")
pretty_win = af.Window(512, 512, "Conway's Game of Life - Current State with visualization")
simple_win.set_pos(25, 15)
pretty_win.set_pos(600, 25)
frame_count = 0
# Copy kernel that specifies neighborhood conditions
kernel = af.Array(h_kernel, dims=(3,3))
# Generate the initial state with 0s and 1s
state = (af.randu(game_h, game_w) > 0.4).as_type(af.Dtype.f32)
# tile 3 times to display color
display = af.tile(state, 1, 1, 3, 1)
while (not simple_win.close()) and (not pretty_win.close()):
delay = time()
if (not simple_win.close()): simple_win.image(state)
if (not pretty_win.close()): pretty_win.image(display)
frame_count += 1
if (frame_count % reset == 0):
state = (af.randu(game_h, game_w) > 0.4).as_type(af.Dtype.f32)
neighborhood = af.convolve(state, kernel)
# state == 1 && neighborhood < 2 --> state = 0
# state == 1 && neighborhood > 3 --> state = 0
# state == 0 && neighborhood == 3 --> state = 1
# else state remains un changed
C0 = neighborhood == 2
C1 = neighborhood == 3
A0 = (state == 1) & (neighborhood < 2)
A1 = (state != 0) & (C0 | C1)
A2 = (state == 0) & C1
A3 = (state == 1) & (neighborhood > 3)
display = af.join(2, A0 + A1, A1 + A2, A3).as_type(af.Dtype.f32)
state = state * C0 + C1
while(time() - delay < (1.0 / fps)):
pass
|