RosettaCodeData/Task/Sierpinski-triangle/Refal/sierpinski-triangle.refal
2024-11-04 21:53:44 -08:00

43 lines
781 B
Text

$ENTRY Go {
= <Sierp 4>;
};
Sierp {
s.N, <Rep <- <Pow2 s.N> 1> ' '>: e.F =
<Sierp1 e.F '*' e.F>;
};
Pow2 {
0 = 1;
s.N = <* 2 <Pow2 <- s.N 1>>>;
};
Rep {
0 s.C = ;
s.N s.C = s.C <Rep <- s.N 1> s.C>;
};
Sierp1 {
e.X, e.X: s.C e.Y, s.C: {
'*' = <Prout e.X>;
' ' = <Prout e.X> <Sierp1 <Sierp2 e.X>>;
};
};
Sierp2 {
e.X = <Sierp3 ' ' e.X ' '>;
};
Sierp3 {
e.X, e.X: s.C e.R, e.X: {
' ' e.Z = ' ' <Sierp3 e.R>;
' *' e.Z = '*' <Sierp3 e.R>;
' * ' e.Z = ' ' <Sierp3 e.R>;
' **' e.Z = '*' <Sierp3 e.R>;
'* ' e.Z = '*' <Sierp3 e.R>;
'* *' e.Z = ' ' <Sierp3 e.R>;
'** ' e.Z = '*' <Sierp3 e.R>;
'***' e.Z = ' ' <Sierp3 e.R>;
e.Z = ;
};
};