aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-11-28 12:05:11 +0000
committerGitHub <noreply@github.com>2021-11-28 12:05:11 +0000
commit7c2e9b3e0436c4f4d0e3440533532d3380c34c8b (patch)
tree2e14885176dc085a1548063e97e8ef76a4b365ea
parent86419bd1f5283879360f54bece05b4d619f2eb69 (diff)
parent3db31768013c96c621b3302f80e7aef36d3209c7 (diff)
downloadperlweeklychallenge-club-7c2e9b3e0436c4f4d0e3440533532d3380c34c8b.tar.gz
perlweeklychallenge-club-7c2e9b3e0436c4f4d0e3440533532d3380c34c8b.tar.bz2
perlweeklychallenge-club-7c2e9b3e0436c4f4d0e3440533532d3380c34c8b.zip
Merge pull request #5291 from LubosKolouch/master
Challenge140LK
-rw-r--r--challenge-140/lubos-kolouch/perl/ch-1.pl69
-rw-r--r--challenge-140/lubos-kolouch/perl/ch-2.pl24
2 files changed, 93 insertions, 0 deletions
diff --git a/challenge-140/lubos-kolouch/perl/ch-1.pl b/challenge-140/lubos-kolouch/perl/ch-1.pl
new file mode 100644
index 0000000000..d1a28879be
--- /dev/null
+++ b/challenge-140/lubos-kolouch/perl/ch-1.pl
@@ -0,0 +1,69 @@
+use strict;
+use warnings;
+
+sub parse_input {
+ my $what = shift;
+
+ my @nums = ($what) =~ /=\s+(\d+).*?(\d+)/;
+
+ return @nums;
+}
+
+sub get_bin_sum {
+ my $what = shift;
+
+ my ( $num1, $num2 ) = parse_input($what);
+
+ return 0 unless $num1 * $num2;
+ my $result = '';
+ my $overflow = 0;
+
+ my $smaller = $num1;
+ my $larger = $num2;
+
+ if ( length($num1) > length($num2) ) {
+ $smaller = $num2;
+ $larger = $num1;
+ }
+
+ for my $num ( 1 .. length($larger) ) {
+ my $add1 = substr( $larger, length($larger) - $num, 1 );
+
+ my $add2 = 0;
+ $add2 = substr( $smaller, length($smaller) - $num, 1 ) if $num <= length($smaller);
+
+ my $sum = $add1 + $add2 + $overflow;
+
+ if ( $sum < 2 ) {
+ $overflow = 0;
+ $result = $sum . $result;
+ }
+ elsif ( $sum == 2 ) {
+ $overflow = 1;
+ $result = "0" . $result;
+ }
+ else {
+ $overflow = 1;
+ $result = "1" . $result;
+
+ }
+
+ }
+ $result = "1" . $result if substr( $result, 0, 1 ) == "0";
+
+ return $result;
+}
+
+use Test::More;
+
+my ( $test_num1, $test_num2 ) = parse_input('$a = 11; $b = 1;');
+
+is( $test_num1, 11 );
+is( $test_num2, 1 );
+
+is( get_bin_sum('$a = 1; $b = 1;'), 10 );
+is( get_bin_sum('$a = 11; $b = 1;'), 100 );
+is( get_bin_sum('$a = 10; $b = 1;'), 11 );
+is( get_bin_sum('$a = 0; $b = 0;'), 0 );
+
+done_testing;
diff --git a/challenge-140/lubos-kolouch/perl/ch-2.pl b/challenge-140/lubos-kolouch/perl/ch-2.pl
new file mode 100644
index 0000000000..b4bddb72c0
--- /dev/null
+++ b/challenge-140/lubos-kolouch/perl/ch-2.pl
@@ -0,0 +1,24 @@
+use strict;
+use warnings;
+
+sub get_k_element {
+ my %what = @_;
+
+ my @result;
+ for my $i ( 1 .. $what{'i'} ) {
+ for my $j ( 1 .. $what{'j'} ) {
+ push @result, $i * $j;
+ }
+ }
+
+ @result = sort { $a cmp $b } @result;
+ return $result[ $what{'k'} - 1 ];
+
+}
+
+use Test::More;
+
+is( get_k_element( ( "i" => 2, "j" => 3, "k" => 4 ) ), 3 );
+is( get_k_element( ( "i" => 3, "j" => 3, "k" => 6 ) ), 4 );
+
+done_testing;