RosettaCodeData/Task/Bell-numbers/Refal/bell-numbers.refal
2025-02-27 18:35:13 -05:00

41 lines
795 B
Text

$ENTRY Go {
, <BellNumbers 50>: e.Bell (e.B50)
, <First 15 e.Bell>: (e.F15) e.Rest
= <Each (Show) e.F15>
<Show e.B50>
<Each (Prout) <BellTriangle 10>>;
}
Show {
(e.X) = <Prout <Symb e.X>>;
};
BellNumbers {
s.N, <BellTriangle s.N>: e.Rows = <Each (Head) e.Rows>;
};
BellTriangle {
s.N = <BellTriangle <Sub s.N 1> ((1))>;
0 e.T = e.T;
s.N e.Rs (e.R) = <BellTriangle <Sub s.N 1> e.Rs (e.R) (<BellStep e.R>)>;
};
BellStep {
e.Row, e.Row: e.X (e.Last) = <Rsum (e.Last) e.Row>;
};
Rsum {
(Acc e.Acc) = ;
(Acc e.Acc) (e.N) e.Ns, <Add (e.N) e.Acc>: e.N2 =
(e.N2) <Rsum (Acc e.N2) e.Ns>;
e.Ns = <Rsum (Acc 0) e.Ns>;
};
Each {
(e.F) = ;
(e.F) (e.X) e.Xs = (<Mu e.F e.X>) <Each (e.F) e.Xs>;
};
Head {
t.X e.Y = t.X;
};