diff options
| author | Phillip Harris <psh@gmx.org> | 2020-02-14 09:44:03 +0100 |
|---|---|---|
| committer | Phillip Harris <psh@gmx.org> | 2020-02-14 09:44:03 +0100 |
| commit | 19268c889db4cad3a2638d369ce500a85be0d7fa (patch) | |
| tree | e286ce6758fe5cfa86e7832c6cf0103aa8d72394 /challenge-047 | |
| parent | 5e4c38c90a43480105a10097598aa0a59e7eab8d (diff) | |
| download | perlweeklychallenge-club-19268c889db4cad3a2638d369ce500a85be0d7fa.tar.gz perlweeklychallenge-club-19268c889db4cad3a2638d369ce500a85be0d7fa.tar.bz2 perlweeklychallenge-club-19268c889db4cad3a2638d369ce500a85be0d7fa.zip | |
test
Diffstat (limited to 'challenge-047')
| -rw-r--r-- | challenge-047/phillip-harris/README~ | 1 | ||||
| -rw-r--r-- | challenge-047/phillip-harris/perl/ch-1.pl~ | 69 | ||||
| -rw-r--r-- | challenge-047/phillip-harris/perl/romcal.pl~ | 66 |
3 files changed, 0 insertions, 136 deletions
diff --git a/challenge-047/phillip-harris/README~ b/challenge-047/phillip-harris/README~ deleted file mode 100644 index c899c90e8a..0000000000 --- a/challenge-047/phillip-harris/README~ +++ /dev/null @@ -1 +0,0 @@ -Solution by Phillip Harris diff --git a/challenge-047/phillip-harris/perl/ch-1.pl~ b/challenge-047/phillip-harris/perl/ch-1.pl~ deleted file mode 100644 index 16ed2c86b9..0000000000 --- a/challenge-047/phillip-harris/perl/ch-1.pl~ +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/perl
-
-# For multiplication, the asterisk must be escaped \*.
-
-use strict;
-
-my $input = join( " ", @ARGV );
-
-if ( $input !~ /.*?([IVXLCDM]+)(.*?)([IVXLCDM]+)/ ) { die "Invalid input" }
-my $number1 = $1;
-my $operator = $2;
-my $number2 = $3;
-$operator =~ s/[^\+\-\*\/]//g;
-
-if ( $operator eq '+' ) {
- print dec2rom( rom2dec($number1) + rom2dec($number2) );
-}
-elsif ( $operator eq '-' ) {
- print dec2rom( rom2dec($number1) - rom2dec($number2) );
-}
-elsif ( $operator eq '*' ) {
- print dec2rom( rom2dec($number1) * rom2dec($number2) );
-}
-elsif ( $operator eq '/' ) {
- print dec2rom( int( rom2dec($number1) / rom2dec($number2) + .5 ) );
-}
-else { die "Invalid operator" }
-print "\n";
-
-sub dec2rom {
- my @rdb = qw(I IV V IX X XL L XC C CD D CM M);
- print @rdb;
- my @ddb = qw(1 4 5 9 10 40 50 90 100 400 500 900 1000);
- my $dec = $_[0];
- my $rom;
- for ( my $x = $#ddb ; $x >= 0 ; $x-- ) {
- if ( $dec / $ddb[$x] >= 1 ) {
- $rom .= $rdb[$x] x int( $dec / $ddb[$x] );
- $dec = $dec - ( $ddb[$x] * int( $dec / $ddb[$x] ) );
- }
- }
- return $rom;
-}
-
-sub rom2dec {
- my %r2d = (
- "I" => 1,
- "V" => 5,
- "X" => 10,
- "L" => 50,
- "C" => 100,
- "D" => 500,
- "M" => 1000
- );
- my $dec;
- my @char = split //, $_[0];
- for ( my $x = 0 ; $x <= $#char ; $x++ ) {
- my $current = $r2d{ $char[$x] };
- my $lookahead = $r2d{ $char[ $x + 1 ] };
- if ( $lookahead > $current ) {
- $dec += $lookahead - $current;
- $x++;
- }
- else {
- $dec += $current;
- }
- }
- return $dec;
-}
diff --git a/challenge-047/phillip-harris/perl/romcal.pl~ b/challenge-047/phillip-harris/perl/romcal.pl~ deleted file mode 100644 index 29e9a5be6e..0000000000 --- a/challenge-047/phillip-harris/perl/romcal.pl~ +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/perl
-
-use strict;
-
-my $input = join( " ", @ARGV );
-
-if ( $input !~ /.*?([IVXLCDM]+)(.*?)([IVXLCDM]+)/ ) { die "Invalid input" }
-my $number1 = $1;
-my $operator = $2;
-my $number2 = $3;
-$operator =~ s/[^\+\-\*\/]//g;
-
-if ( $operator eq '+' ) {
- print dec2rom( rom2dec($number1) + rom2dec($number2) );
-}
-elsif ( $operator eq '-' ) {
- print dec2rom( rom2dec($number1) - rom2dec($number2) );
-}
-elsif ( $operator eq '*' ) {
- print dec2rom( rom2dec($number1) * rom2dec($number2) );
-}
-elsif ( $operator eq '/' ) {
- print dec2rom( int( rom2dec($number1) / rom2dec($number2) + .5 ) );
-}
-print "\n";
-else { die "Invalid operator" }
-
-sub dec2rom {
- my @rdb = qw(I IV V IX X XL L XC C CD D CM M);
- my @ddb = qw(1 4 5 9 10 40 50 90 100 400 500 900 1000);
- my $dec = $_[0];
- my $rom;
- for ( my $x = $#ddb ; $x >= 0 ; $x-- ) {
- if ( $dec / $ddb[$x] >= 1 ) {
- $rom .= $rdb[$x] x int( $dec / $ddb[$x] );
- $dec = $dec - ( $ddb[$x] * int( $dec / $ddb[$x] ) );
- }
- }
- return $rom;
-}
-
-sub rom2dec {
- my %r2d = (
- "I" => 1,
- "V" => 5,
- "X" => 10,
- "L" => 50,
- "C" => 100,
- "D" => 500,
- "M" => 1000
- );
- my $dec;
- my @char = split //, $_[0];
- for ( my $x = 0 ; $x <= $#char ; $x++ ) {
- my $current = $r2d{ $char[$x] };
- my $lookahead = $r2d{ $char[ $x + 1 ] };
- if ( $lookahead > $current ) {
- $dec += $lookahead - $current;
- $x++;
- }
- else {
- $dec += $current;
- }
- }
- return $dec;
-}
|
