Elementary cellular automaton: Difference between revisions
Content deleted Content added
Alextretyak (talk | contribs) Added 11l |
Added solution for Action! |
||
Line 70: | Line 70: | ||
* * * * * * * * * * * * * * * * |
* * * * * * * * * * * * * * * * |
||
</pre> |
</pre> |
||
=={{header|Action!}}== |
|||
<lang Action!>DEFINE ROW_LEN="320" |
|||
DEFINE MAX_COL="319" |
|||
DEFINE MAX_ROW="191" |
|||
PROC GenerateMask(BYTE rule BYTE ARRAY mask) |
|||
BYTE i |
|||
FOR i=0 TO 7 |
|||
DO |
|||
mask(i)=rule&1 |
|||
rule==RSH 1 |
|||
OD |
|||
RETURN |
|||
PROC InitRow(BYTE ARRAY row) |
|||
INT c |
|||
FOR c=0 TO MAX_COL |
|||
DO |
|||
row(c)=0 |
|||
OD |
|||
row(ROW_LEN RSH 1)=1 |
|||
RETURN |
|||
PROC DrawRow(BYTE ARRAY row BYTE y) |
|||
INT c |
|||
FOR c=0 TO MAX_COL |
|||
DO |
|||
Color=row(c) |
|||
Plot(c,y) |
|||
OD |
|||
RETURN |
|||
PROC CalcNextRow(BYTE ARRAY currRow,nextRow,mask) |
|||
INT c |
|||
BYTE v |
|||
v=currRow(MAX_COL) LSH 2 |
|||
v==%currRow(0) LSH 1 |
|||
v==%currRow(1) |
|||
nextRow(0)=mask(v) |
|||
FOR c=1 TO MAX_COL-1 |
|||
DO |
|||
v==&3 |
|||
v==LSH 1 |
|||
v==%currRow(c+1) |
|||
nextRow(c)=mask(v) |
|||
OD |
|||
v==&3 |
|||
v==LSH 1 |
|||
v==%currRow(0) |
|||
nextRow(MAX_COL)=mask(v) |
|||
RETURN |
|||
PROC DrawRule(BYTE rule) |
|||
BYTE ARRAY row1(ROW_LEN),row2(ROW_LEN),mask(8) |
|||
BYTE ARRAY currRow,nextRow,tmp |
|||
BYTE y |
|||
GenerateMask(rule,mask) |
|||
currRow=row1 |
|||
nextRow=row2 |
|||
InitRow(currRow) |
|||
y=0 |
|||
WHILE y<=MAX_ROW |
|||
DO |
|||
DrawRow(currRow,y) |
|||
CalcNextRow(currRow,nextRow,mask) |
|||
tmp=currRow currRow=nextRow nextRow=tmp |
|||
y==+1 |
|||
OD |
|||
RETURN |
|||
PROC Main() |
|||
BYTE CH=$02FC,COLOR1=$02C5,COLOR2=$02C6 |
|||
Graphics(8+16) |
|||
Color=1 |
|||
COLOR1=$0C |
|||
COLOR2=$02 |
|||
DrawRule(30) |
|||
DO UNTIL CH#$FF OD |
|||
CH=$FF |
|||
RETURN</lang> |
|||
{{out}} |
|||
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Elementary_cellular_automaton.png Screenshot from Atari 8-bit computer] |
|||
=={{header|Ada}}== |
=={{header|Ada}}== |