Data update
This commit is contained in:
parent
52a6ef48dd
commit
157b70a810
604 changed files with 14253 additions and 2100 deletions
78
Task/Fractran/Refal/fractran.refal
Normal file
78
Task/Fractran/Refal/fractran.refal
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
$ENTRY Go {
|
||||
, <Prog <PrimeProgram>>: e.Prog
|
||||
= <Prout <FracRun 15 (2) e.Prog>>
|
||||
<Prout <FracPrimes 20 (2) e.Prog>>;
|
||||
};
|
||||
|
||||
PrimeProgram {
|
||||
= '17/91 78/85 19/51 23/38 29/33 77/29 95/23 77/19 '
|
||||
'1/17 11/13 13/11 15/14 15/2 55/1';
|
||||
};
|
||||
|
||||
FracPrimes {
|
||||
0 e.X = ;
|
||||
s.I (e.N) e.P,
|
||||
<FracStep (e.N) e.P>: Next e.N2,
|
||||
<FracPrime e.N>: {
|
||||
T s.N = s.N <FracPrimes <- s.I 1> (e.N2) e.P>;
|
||||
F = <FracPrimes s.I (e.N2) e.P>;
|
||||
};
|
||||
};
|
||||
|
||||
FracPrime {
|
||||
(1) 1 = F;
|
||||
(s.N) 1 = T s.N;
|
||||
(s.N) e.X, <Divmod (e.X) 2>: {
|
||||
(e.X2) 0 = <FracPrime (<+ 1 s.N>) e.X2>;
|
||||
e.Z = F;
|
||||
};
|
||||
e.X = <FracPrime (0) e.X>;
|
||||
};
|
||||
|
||||
FracRun {
|
||||
0 e.X = ;
|
||||
s.I (e.N) e.P, <FracStep (e.N) e.P>: {
|
||||
Halt = e.N;
|
||||
Next e.N2 = e.N <FracRun <- s.I 1> (e.N2) e.P>;
|
||||
};
|
||||
};
|
||||
|
||||
FracStep {
|
||||
(e.N) = Halt;
|
||||
(e.N) ((e.Num) e.Denom) e.P,
|
||||
<Divmod (<Mul (e.N) e.Num>) e.Denom>: {
|
||||
(e.N2) 0 = Next e.N2;
|
||||
e.X = <FracStep (e.N) e.P>;
|
||||
};
|
||||
};
|
||||
|
||||
Prog {
|
||||
e.X, <Frac e.X>: T (e.F) e.R = (e.F) <Prog e.R>;
|
||||
e.X = ;
|
||||
};
|
||||
|
||||
Frac {
|
||||
e.X, <Num e.X>: T (e.N) e.X2,
|
||||
<SkipWs e.X2>: '/' e.X3,
|
||||
<Num e.X3>: T (e.D) e.X4 =
|
||||
T ((e.N) e.D) e.X4;
|
||||
e.X = F e.X;
|
||||
};
|
||||
|
||||
Num {
|
||||
e.X, <Span ('0123456789') <SkipWs e.X>>: {
|
||||
() e.R = F e.R;
|
||||
(e.N) e.R = T (<Numb e.N>) e.R;
|
||||
};
|
||||
};
|
||||
|
||||
Span {
|
||||
(e.M) (e.S) s.C e.X, e.S: e.1 s.C e.2 = <Span (e.M s.C) (e.S) e.X>;
|
||||
(e.M) (e.S) e.X = (e.M) e.X;
|
||||
(e.S) e.X = <Span () (e.S) e.X>;
|
||||
};
|
||||
|
||||
SkipWs {
|
||||
s.C e.X, ' \n\t': e.1 s.C e.2 = <SkipWs e.X>;
|
||||
e.X = e.X;
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue