blob: dc05bdfd0f6d1701269bebbebd8fb6ac7a04853e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
use v6.c;
unit module Int-Roman2;
use MONKEY-TYPING;
augment class Int
{
method roman
{
my $value = self;
my $string = "";
while $value >= 1000 { $string ~= "M"; $value -= 1000; }
if $value >= 900 { $string ~= "CM"; $value -= 900; }
if $value >= 500 { $string ~= "D"; $value -= 500; }
if $value >= 400 { $string ~= "CD"; $value -= 400; }
while $value >= 100 { $string ~= "C"; $value -= 100; }
if $value >= 90 { $string ~= "XC"; $value -= 90; }
if $value >= 50 { $string ~= "L"; $value -= 50; }
if $value >= 40 { $string ~= "XL"; $value -= 40; }
while $value >= 10 { $string ~= "X"; $value -= 10; }
if $value >= 9 { $string ~= "IX"; $value -= 9; }
if $value >= 5 { $string ~= "V"; $value -= 5; }
if $value >= 4 { $string ~= "IV"; $value -= 4; }
while $value >= 1 { $string ~= "I"; $value -= 1; }
return $string;
}
multi method base ("r")
{
return self.roman;
}
}
|