📄 arabic2roman.pl
字号:
#! /usr/bin/perl -w
@RS = qw(I V X L C D M MMM); # symbols of Roman numerals
@RV = qw(1 5 10 50 100 500 1000); # values of Roman numerals
$MAX = 4999;
sub Arabic2Roman {
my $bs = '', my $i, my ($num) = shift;
return "not valid" if (($num !~ /^(\d+)$/) || $num > $MAX || $num <= 0);
for ($i = @RV-1; $i >= 0; ) { # eg: 9 -> VIIII
($num >= $RV[$i]) ? ($num -= $RV[$i], $bs .= $RS[$i]) : $i--;
}
for ($i=0; $i<@RV; $i++) { # eg: VIIII -> VIV
$bs =~ s/($RS[$i]){4}/$RS[$i]$RS[$i+1]/g;
}
$bs;
}
sub Roman2Arabic {
my ($r, $oldv, $i, $s, $v) = (0, 0);
foreach $s (reverse split ('', uc $_[0])) {
$i = 0;
($v) = grep ($s eq $RS[$i++], @RV);
$r += ($v<$oldv)? -$v : ($oldv = $v);
}
$r;
}
# for example
foreach (@ARGV) {
print "$_: ", Arabic2Roman($_), "\n";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -