From a8c3d2b2017671959c0a97fc6ea4fb21e5bce396 Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Fri, 5 Apr 2019 00:53:00 +0100 Subject: - Added solution by Matt Latusek. --- challenge-002/matt-latusek/README | 1 + challenge-002/matt-latusek/perl5/ch-1.sh | 1 + challenge-002/matt-latusek/perl5/ch-2.pl | 37 ++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 challenge-002/matt-latusek/README create mode 100755 challenge-002/matt-latusek/perl5/ch-1.sh create mode 100755 challenge-002/matt-latusek/perl5/ch-2.pl diff --git a/challenge-002/matt-latusek/README b/challenge-002/matt-latusek/README new file mode 100644 index 0000000000..e1dc8b6e16 --- /dev/null +++ b/challenge-002/matt-latusek/README @@ -0,0 +1 @@ +Solution by Matt Latusek. diff --git a/challenge-002/matt-latusek/perl5/ch-1.sh b/challenge-002/matt-latusek/perl5/ch-1.sh new file mode 100755 index 0000000000..7741175edf --- /dev/null +++ b/challenge-002/matt-latusek/perl5/ch-1.sh @@ -0,0 +1 @@ +perl -lpe '$_ = ord($_^v45) ? $_*1 : $_' diff --git a/challenge-002/matt-latusek/perl5/ch-2.pl b/challenge-002/matt-latusek/perl5/ch-2.pl new file mode 100755 index 0000000000..fe586e76bd --- /dev/null +++ b/challenge-002/matt-latusek/perl5/ch-2.pl @@ -0,0 +1,37 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use Scalar::Util 'looks_like_number'; + +my $bi = shift // 10; +die "Invalid input base '$bi'.\n" + unless looks_like_number($bi) + and $bi > 1 + and $bi < 37; +my $bo = shift // 35; +die "Invalid output base '$bo'.\n" + unless looks_like_number($bo) + and $bo > 1 + and $bo < 37; + +my $i = 0; +my @digits = ( 0 .. 9, 'A' .. 'Z' ); +my %digits = map { $_ => $i++ } @digits; + +while ( readline() ) { + chomp; + my ( $i, $o, $n, $b ) = ( uc($_), '', 0, 1 ); + while ( length $i ) { + $i =~ s/^(.*?)\s*(.)$/$1/; + die "Invalid digit '$2'.\n" + unless exists $digits{$2} and $digits{$2} < $bi; + $n += $b * $digits{$2}; + $b *= $bi; + } + while ($n) { + $o .= $digits[ $n % $bo ]; + $n = int( $n / $bo ); + } + print( ( length $o ? reverse $o : '0' ) . "\n" ); +} -- cgit