From 04cceed50aa1edcd78ca3f7fc872d88b499be7af Mon Sep 17 00:00:00 2001 From: lakpatashi Date: Tue, 13 Apr 2021 22:14:22 +0530 Subject: Revision to challenge #002 perl --- challenge-002/lakpatashi/perl/ch-1.pl | 6 ++--- challenge-002/lakpatashi/perl/ch-2.pl | 47 ++++++++++++++++++++++++----------- challenge-003/lakpatashi/README | 1 + 3 files changed, 36 insertions(+), 18 deletions(-) create mode 100644 challenge-003/lakpatashi/README diff --git a/challenge-002/lakpatashi/perl/ch-1.pl b/challenge-002/lakpatashi/perl/ch-1.pl index 0b3cf1b5cc..a599171f61 100755 --- a/challenge-002/lakpatashi/perl/ch-1.pl +++ b/challenge-002/lakpatashi/perl/ch-1.pl @@ -5,9 +5,9 @@ use warnings; # PART 1 -my $var = 'Perl Weekly Challenge'; +my $var = '000012340000'; print "Before:: $var\n"; -my $repCount = $var =~ s/e/E/g; +my $repCount = $var =~ s/^0+//g; print "After :: $var\n"; -print "Pattern matched:: $repCount\n"; +print "char Replaced:: $repCount\n"; diff --git a/challenge-002/lakpatashi/perl/ch-2.pl b/challenge-002/lakpatashi/perl/ch-2.pl index aa05b41cf7..ef4bec3468 100755 --- a/challenge-002/lakpatashi/perl/ch-2.pl +++ b/challenge-002/lakpatashi/perl/ch-2.pl @@ -4,22 +4,39 @@ use strict; use warnings; # PART 2 +use List::Util qw(min max sum); +use Data::Dumper qw(Dumper); +my %digit; +my @keys = ( (0..9),('A'..'Y') ); +my @values = (0..35); +@digit{@keys}=@values; +my %digitRev = reverse %digit; +#print Dumper \%digitRev; -use feature "switch"; +my $num1 = 'A1K3'; +print "Given base35 no:: $num1\n"; +print "converted to int no:: ",intToBase35($num1),"\n"; -for my $i (1..20){ - given($i){ - when(not $i%15){ - print "fizzbuzz\n"; - } - when(not $i%3){ - print "fizz\n"; - } - when(not $i%5){ - print "buzz\n"; - } - default{ - print "$i\n"; - } +my $num2 = 430678; +print "Given int no:: $num2\n"; +print "converted to base35 no:: ",base35ToInt($num2),"\n"; + + +sub intToBase35{ + my @num = split '', shift; + @num = reverse @num; + @num = map { $digit{$num[$_]} * 35**$_ } 0..$#num ; + return sum @num; +} + +sub base35ToInt{ + my $num = shift; + my @arr; + while($num > 35){ + unshift @arr, $num%35; + $num = int($num/35); } + unshift @arr, $num; + @arr = map { $digitRev{$_} } @arr; + return join '',@arr; } diff --git a/challenge-003/lakpatashi/README b/challenge-003/lakpatashi/README new file mode 100644 index 0000000000..bc153bd576 --- /dev/null +++ b/challenge-003/lakpatashi/README @@ -0,0 +1 @@ +Solution by lakpatashi -- cgit