From 46bd74ae15b5dc06418ea2e64cc011d0b05254b1 Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Tue, 7 Jan 2020 18:31:31 +0000 Subject: - Added solutions by Duane Powell. --- challenge-042/duane-powell/perl/ch-1.pl | 87 ++++++++++++++++++++++++++++++++ challenge-042/duane-powell/perl/ch-2.pl | 61 ++++++++++++++++++++++ challenge-042/duane-powell/perl5/ch-1.pl | 87 -------------------------------- challenge-042/duane-powell/perl5/ch-2.pl | 61 ---------------------- 4 files changed, 148 insertions(+), 148 deletions(-) create mode 100755 challenge-042/duane-powell/perl/ch-1.pl create mode 100755 challenge-042/duane-powell/perl/ch-2.pl delete mode 100755 challenge-042/duane-powell/perl5/ch-1.pl delete mode 100755 challenge-042/duane-powell/perl5/ch-2.pl (limited to 'challenge-042') diff --git a/challenge-042/duane-powell/perl/ch-1.pl b/challenge-042/duane-powell/perl/ch-1.pl new file mode 100755 index 0000000000..774852e2d9 --- /dev/null +++ b/challenge-042/duane-powell/perl/ch-1.pl @@ -0,0 +1,87 @@ +#!/usr/bin/perl +use warnings; +use strict; +use feature qw( say ); + +# Write a script to print decimal number 0 to 50 in Octal Number System. + +my $decimal_no = shift; +if ($decimal_no) { + say convert_to_octal($decimal_no); +} +else { + for (0 .. 50) { + say convert_to_octal($_); + } +} + +sub convert_to_octal { + my $n = shift; + return 0 if ($n == 0); + my @oct; + while ($n > 0) { + my $remainder = $n/8 - int($n/8); + push @oct, $remainder * 8; + $n = int($n/8); + } + return join('',reverse @oct); +} + +__END__ + +./ch-1.pl 1023 +1777 + +./ch-1.pl +0 +1 +2 +3 +4 +5 +6 +7 +10 +11 +12 +13 +14 +15 +16 +17 +20 +21 +22 +23 +24 +25 +26 +27 +30 +31 +32 +33 +34 +35 +36 +37 +40 +41 +42 +43 +44 +45 +46 +47 +50 +51 +52 +53 +54 +55 +56 +57 +60 +61 +62 + diff --git a/challenge-042/duane-powell/perl/ch-2.pl b/challenge-042/duane-powell/perl/ch-2.pl new file mode 100755 index 0000000000..ca738e1235 --- /dev/null +++ b/challenge-042/duane-powell/perl/ch-2.pl @@ -0,0 +1,61 @@ +#!/usr/bin/perl +use warnings; +use strict; +use feature qw( say ); + +# Write a script to generate a string with random number of ( and ) brackets. Then make the script validate the string if it has balanced brackets + +use constant { + L_PAREN => '(', + R_PAREN => ')', +}; + +# generate between 1 and 7 parens, if paren string not passed from cmd line +my $paren = shift; +if ($paren) { + say "Given paren string = $paren"; +} +else { + my $lower_limit = 2; + my $upper_limit = 7; + my $random_number = int(rand($upper_limit-$lower_limit)) + $lower_limit; + for (1 .. $random_number) { + # coin toss left or right paren + $paren .= (rand() < 0.5) ? L_PAREN : R_PAREN; + } + say "Random paren string = $paren"; +} + +# test if parens are balanced +my $msg; +my $paren_count = 0; +foreach (split(//,$paren)) { + $paren_count-- if ($_ eq R_PAREN); + $paren_count++ if ($_ eq L_PAREN); + if ($paren_count < 0) { + $msg = "Parens are not balanced."; + last; + } +} +$msg = 'Parens are balanced.' if ($paren_count == 0); +$msg = 'Parens are not closed.' if ($paren_count > 0); +say $msg; + +__END__ + +./ch-2.pl +random paren string = () +Parens are balanced. + +./ch-2.pl "((())())" +Given paren string = ((())()) +Parens are balanced. + +./ch-2.pl ")(()()(((()))))" +Given paren string = )(()()(((())))) +Parens are not balanced. + +./ch-2.pl "((())" +Given paren string = ((()) +Parens are not closed. + diff --git a/challenge-042/duane-powell/perl5/ch-1.pl b/challenge-042/duane-powell/perl5/ch-1.pl deleted file mode 100755 index 774852e2d9..0000000000 --- a/challenge-042/duane-powell/perl5/ch-1.pl +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/perl -use warnings; -use strict; -use feature qw( say ); - -# Write a script to print decimal number 0 to 50 in Octal Number System. - -my $decimal_no = shift; -if ($decimal_no) { - say convert_to_octal($decimal_no); -} -else { - for (0 .. 50) { - say convert_to_octal($_); - } -} - -sub convert_to_octal { - my $n = shift; - return 0 if ($n == 0); - my @oct; - while ($n > 0) { - my $remainder = $n/8 - int($n/8); - push @oct, $remainder * 8; - $n = int($n/8); - } - return join('',reverse @oct); -} - -__END__ - -./ch-1.pl 1023 -1777 - -./ch-1.pl -0 -1 -2 -3 -4 -5 -6 -7 -10 -11 -12 -13 -14 -15 -16 -17 -20 -21 -22 -23 -24 -25 -26 -27 -30 -31 -32 -33 -34 -35 -36 -37 -40 -41 -42 -43 -44 -45 -46 -47 -50 -51 -52 -53 -54 -55 -56 -57 -60 -61 -62 - diff --git a/challenge-042/duane-powell/perl5/ch-2.pl b/challenge-042/duane-powell/perl5/ch-2.pl deleted file mode 100755 index ca738e1235..0000000000 --- a/challenge-042/duane-powell/perl5/ch-2.pl +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/perl -use warnings; -use strict; -use feature qw( say ); - -# Write a script to generate a string with random number of ( and ) brackets. Then make the script validate the string if it has balanced brackets - -use constant { - L_PAREN => '(', - R_PAREN => ')', -}; - -# generate between 1 and 7 parens, if paren string not passed from cmd line -my $paren = shift; -if ($paren) { - say "Given paren string = $paren"; -} -else { - my $lower_limit = 2; - my $upper_limit = 7; - my $random_number = int(rand($upper_limit-$lower_limit)) + $lower_limit; - for (1 .. $random_number) { - # coin toss left or right paren - $paren .= (rand() < 0.5) ? L_PAREN : R_PAREN; - } - say "Random paren string = $paren"; -} - -# test if parens are balanced -my $msg; -my $paren_count = 0; -foreach (split(//,$paren)) { - $paren_count-- if ($_ eq R_PAREN); - $paren_count++ if ($_ eq L_PAREN); - if ($paren_count < 0) { - $msg = "Parens are not balanced."; - last; - } -} -$msg = 'Parens are balanced.' if ($paren_count == 0); -$msg = 'Parens are not closed.' if ($paren_count > 0); -say $msg; - -__END__ - -./ch-2.pl -random paren string = () -Parens are balanced. - -./ch-2.pl "((())())" -Given paren string = ((())()) -Parens are balanced. - -./ch-2.pl ")(()()(((()))))" -Given paren string = )(()()(((())))) -Parens are not balanced. - -./ch-2.pl "((())" -Given paren string = ((()) -Parens are not closed. - -- cgit