Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
14
Task/Roman-numerals-Encode/Perl/roman-numerals-encode-1.pl
Normal file
14
Task/Roman-numerals-Encode/Perl/roman-numerals-encode-1.pl
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
my @symbols = ( [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'] );
|
||||
|
||||
sub roman {
|
||||
my($n, $r) = (shift, '');
|
||||
($r, $n) = ('-', -$n) if $n < 0; # Optional handling of negative input
|
||||
foreach my $s (@symbols) {
|
||||
my($arabic, $roman) = @$s;
|
||||
($r, $n) = ($r .= $roman x int($n/$arabic), $n % $arabic)
|
||||
if $n >= $arabic;
|
||||
}
|
||||
$r;
|
||||
}
|
||||
|
||||
say roman($_) for 1..2012;
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
use Math::Roman qw/roman/;
|
||||
say roman($_) for 1..2012'
|
||||
23
Task/Roman-numerals-Encode/Perl/roman-numerals-encode-3.pl
Normal file
23
Task/Roman-numerals-Encode/Perl/roman-numerals-encode-3.pl
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
use List::MoreUtils qw( natatime );
|
||||
|
||||
my %symbols = (
|
||||
1 => "I", 5 => "V", 10 => "X", 50 => "L", 100 => "C",
|
||||
500 => "D", 1_000 => "M"
|
||||
);
|
||||
|
||||
my @subtractors = (
|
||||
1_000, 100, 500, 100, 100, 10, 50, 10, 10, 1, 5, 1, 1, 0
|
||||
);
|
||||
|
||||
sub roman {
|
||||
return '' if 0 == (my $n = shift);
|
||||
my $iter = natatime 2, @subtractors;
|
||||
while( my ($cut, $minus) = $iter->() ) {
|
||||
$n >= $cut
|
||||
and return $symbols{$cut} . roman($n - $cut);
|
||||
$n >= $cut - $minus
|
||||
and return $symbols{$minus} . roman($n + $minus);
|
||||
}
|
||||
};
|
||||
|
||||
print roman($_) . "\n" for 1..2012;
|
||||
Loading…
Add table
Add a link
Reference in a new issue