aboutsummaryrefslogtreecommitdiff
path: root/challenge-047
diff options
context:
space:
mode:
authorPhillip Harris <psh@gmx.org>2020-02-14 09:44:03 +0100
committerPhillip Harris <psh@gmx.org>2020-02-14 09:44:03 +0100
commit19268c889db4cad3a2638d369ce500a85be0d7fa (patch)
treee286ce6758fe5cfa86e7832c6cf0103aa8d72394 /challenge-047
parent5e4c38c90a43480105a10097598aa0a59e7eab8d (diff)
downloadperlweeklychallenge-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;
-}