32 lines
706 B
Plaintext
32 lines
706 B
Plaintext
$ENTRY Go {
|
|
= <Show 1666>
|
|
<Show 2008>
|
|
<Show 1001>
|
|
<Show 1999>
|
|
<Show 3888>
|
|
<Show 2025>;
|
|
};
|
|
|
|
Show {
|
|
s.N = <Prout <Symb s.N> ' = ' <Roman s.N>>;
|
|
};
|
|
|
|
Roman {
|
|
0 = ;
|
|
s.N, <RomanStep s.N>: s.Next e.Part = e.Part <Roman s.Next>;
|
|
};
|
|
|
|
RomanStep {
|
|
s.N = <RomanStep s.N <RomanDigits>>;
|
|
s.N (s.Size e.Part) e.Parts, <Compare s.N <Sub s.Size 1>>: '+' =
|
|
<Sub s.N s.Size> e.Part;
|
|
s.N t.Part e.Parts = <RomanStep s.N e.Parts>;
|
|
};
|
|
|
|
RomanDigits {
|
|
= (1000 'M')
|
|
( 900 'CM') ( 500 'D') ( 400 'CD') ( 100 'C')
|
|
( 90 'XC') ( 50 'L') ( 40 'XL') ( 10 'X')
|
|
( 9 'IX') ( 5 'V') ( 4 'IV') ( 1 'I');
|
|
};
|