Sha256: 5e96f2dfc6eef65bde3c421aca1d8741debd6dda31ff0db78900c38105ff98f6

Contents?: true

Size: 678 Bytes

Versions: 73

Compression:

Stored size: 678 Bytes

Contents

package Decimal;

use strict;
use warnings;

my %ROMANS = qw(
    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 new {
    return bless {
       decimal => $_[1] 
    } => $_[0]
}

sub to_roman {
    my $self = shift;
    my $decimal = $self->{decimal};
    my $roman;
    my @places = sort {$b <=> $a} keys %ROMANS;

    use integer;

    while ( $decimal > 0 ) {
        my $key = shift @places;
        my $repeat = $decimal / $key;
        $decimal  -= $key * $repeat;
        $roman    .= $ROMANS{$key} x $repeat;
    }

    return $roman;
}

__PACKAGE__;

Version data entries

73 entries across 73 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.179 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.178 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.177 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.176 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.175 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.174 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.173 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.172 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.171 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.170 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.169 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.167 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.166 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.165 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.164 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.163 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.162 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.161 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm
trackler-2.2.1.160 tracks/perl5/exercises/roman-numerals/.meta/solutions/Decimal.pm