Created
October 21, 2013 07:57
-
-
Save koniiiik/7080146 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#INCLUDE "hostio.inc" | |
#USE "hostio.lib" | |
#USE "snglmath.lib" | |
VAL INT NUM.CELLS IS 47: | |
VAL INT OUTPUT.FIELD.WIDTH IS 3: | |
INT32, INT32 FUNCTION Random.bit(VAL INT32 seed) | |
-- Generates pseudo-random numbers. Returns an INT32 with a value of 0 or 1. | |
INT32 new.seed, result: | |
REAL32 number: | |
VALOF | |
SEQ | |
number, new.seed := RAN(seed) | |
IF | |
number < 0.5 | |
result := 0 | |
TRUE | |
result := 1 | |
RESULT result, new.seed | |
: | |
PROC life.cell (CHAN OF INT n0.in, n0.out, n1.in, n1.out, collector, | |
VAL INT initial.state) | |
INT state: | |
SEQ | |
state := initial.state | |
WHILE TRUE | |
INT st0, st1: | |
SEQ | |
collector ! state | |
PAR | |
n0.in ? st0 | |
n1.in ? st1 | |
n0.out ! state | |
n1.out ! state | |
CASE (state + st0) + st1 | |
2, 3 | |
state := 1 | |
ELSE | |
state := 0 | |
: | |
PROC life.printer ([]CHAN OF INT states.input, CHAN OF SP fs, ts) | |
WHILE TRUE | |
INT state: | |
SEQ | |
SEQ i = 0 FOR NUM.CELLS | |
SEQ | |
states.input[i] ? state | |
so.write.int (fs, ts, state, OUTPUT.FIELD.WIDTH) | |
so.write.nl (fs, ts) | |
: | |
PROC life.main (CHAN OF SP fs, ts) | |
INT32 random.number, random.state: | |
[NUM.CELLS]CHAN OF INT forward, backward, collectors: | |
[NUM.CELLS]INT initial.states: | |
SEQ | |
so.time (fs, ts, random.state, random.number) | |
SEQ i = 0 FOR NUM.CELLS | |
SEQ | |
random.number, random.state := Random.bit (random.state) | |
initial.states[i] := INT(random.number) | |
PAR | |
life.printer (collectors, fs, ts) | |
PAR i = 0 FOR NUM.CELLS | |
life.cell (forward[i], | |
backward[i], | |
backward[(i + 1) \ NUM.CELLS], | |
forward[(i + 1) \ NUM.CELLS], | |
collectors[i], | |
initial.states[i]) | |
: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment