60 lines
1.1 KiB
Text
60 lines
1.1 KiB
Text
$ENTRY Go {
|
|
= <Each (Row) <Iota 0 12>>
|
|
<Prout>
|
|
<Prout 'Maximum value for lah(100,k):'>
|
|
<Prout <Symb <FindMax>>>;
|
|
};
|
|
|
|
Fac {
|
|
0 = 1;
|
|
e.N = <Mul (e.N) <Fac <Sub (e.N) 1>>>;
|
|
};
|
|
|
|
Lah {
|
|
(e.N) e.N = 1;
|
|
(0) e.K = 0;
|
|
(e.N) 0 = 0;
|
|
(e.N) 1 = <Fac e.N>;
|
|
(e.N) e.K,
|
|
<Mul (<Fac e.N>) <Fac <Sub (e.N) 1>>>: e.1,
|
|
<Mul (<Fac e.K>) <Fac <Sub (e.K) 1>>>: e.2,
|
|
<Fac <Sub (e.N) e.K>>: e.3 =
|
|
<Div (<Div (e.1) e.2>) e.3>;
|
|
};
|
|
|
|
FindMax {
|
|
= <FindMax (0) 1>;
|
|
(e.M) 101 = e.M;
|
|
(e.M) s.I, <Lah (100) s.I>: e.C =
|
|
<FindMax (<Max (e.M) e.C>) <Add 1 s.I>>;
|
|
};
|
|
|
|
Max {
|
|
(e.1) e.2, <Compare (e.1) e.2>: {
|
|
'+' = e.1;
|
|
s.C = e.2;
|
|
};
|
|
};
|
|
|
|
Rpt {
|
|
0 s.C = ;
|
|
s.N s.C = s.C <Rpt <Sub s.N 1> s.C>;
|
|
};
|
|
|
|
Fmt {
|
|
s.W e.N, <Last s.W <Rpt s.W ' '> <Symb e.N>>: (e.1) e.2 = e.2;
|
|
};
|
|
|
|
Row {
|
|
s.N = <Prout <Each (Fmt 11) <Each (Lah (s.N)) <Iota 0 s.N>>>>;
|
|
};
|
|
|
|
Iota {
|
|
s.E s.E = s.E;
|
|
s.S s.E = s.S <Iota <Add 1 s.S> s.E>;
|
|
};
|
|
|
|
Each {
|
|
(e.F) = ;
|
|
(e.F) t.X e.Xs = <Mu e.F t.X> <Each (e.F) e.Xs>;
|
|
};
|