RosettaCodeData/Task/One-dimensional-cellular-automata/Refal/one-dimensional-cellular-automata.refal
2024-07-13 15:19:22 -07:00

39 lines
696 B
Text

$ENTRY Go {
, ' ### ## # # # # # ': e.State
= <Run <Table> 10 e.State>;
};
Table {
= (((' ') ' ')
((' #') ' ')
((' # ') ' ')
((' ##') '#')
(('# ') ' ')
(('# #') '#')
(('## ') '#')
(('###') ' '));
};
Run {
t.Table 0 e.X = ;
t.Table s.Steps e.X =
<Prout e.X>
<Run t.Table <- s.Steps 1> <DoStep t.Table e.X>>;
};
DoStep {
t.Table e.X = <Step1 t.Table ' ' e.X ' '>;
};
Step1 {
t.Table s.1 s.2 s.3 e.R,
<Lookup t.Table s.1 s.2 s.3>: e.Next,
e.R: {
= e.Next;
e.R = e.Next <Step1 t.Table s.2 s.3 e.R>;
};
}
Lookup {
(e.A ((e.X)e.Y) e.B) e.X = e.Y;
};