diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-11-28 12:05:11 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-28 12:05:11 +0000 |
| commit | 7c2e9b3e0436c4f4d0e3440533532d3380c34c8b (patch) | |
| tree | 2e14885176dc085a1548063e97e8ef76a4b365ea | |
| parent | 86419bd1f5283879360f54bece05b4d619f2eb69 (diff) | |
| parent | 3db31768013c96c621b3302f80e7aef36d3209c7 (diff) | |
| download | perlweeklychallenge-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.pl | 69 | ||||
| -rw-r--r-- | challenge-140/lubos-kolouch/perl/ch-2.pl | 24 |
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; |
