aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubos Kolouch <lubos@kolouch.net>2020-09-26 14:29:48 +0200
committerLubos Kolouch <lubos@kolouch.net>2020-09-26 14:29:48 +0200
commitdbcea1766a0b2a7726d624f8c50b994909baf0a3 (patch)
tree0ff47042f4e14a43db8633c1597e6c9eee9ad6ac
parent1ac0b05188e44ca889ace85bf0e8974d83feb7b6 (diff)
downloadperlweeklychallenge-club-dbcea1766a0b2a7726d624f8c50b994909baf0a3.tar.gz
perlweeklychallenge-club-dbcea1766a0b2a7726d624f8c50b994909baf0a3.tar.bz2
perlweeklychallenge-club-dbcea1766a0b2a7726d624f8c50b994909baf0a3.zip
Solutions Challenge 079 Lubos Kolouch Perl Python
-rw-r--r--challenge-079/lubos-kolouch/perl/ch-1.pl38
-rw-r--r--challenge-079/lubos-kolouch/perl/ch-2.pl57
-rw-r--r--challenge-079/lubos-kolouch/python/ch-1.py30
-rw-r--r--challenge-079/lubos-kolouch/python/ch-2.py40
4 files changed, 165 insertions, 0 deletions
diff --git a/challenge-079/lubos-kolouch/perl/ch-1.pl b/challenge-079/lubos-kolouch/perl/ch-1.pl
new file mode 100644
index 0000000000..3f5c188b9c
--- /dev/null
+++ b/challenge-079/lubos-kolouch/perl/ch-1.pl
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+#===============================================================================
+#
+# FILE: ch-1.pl
+#
+# USAGE: ./ch-1.pl
+#
+# DESCRIPTION: Perl Weekly Challenge Task 1
+# https://perlweeklychallenge.org/blog/perl-weekly-challenge-079/
+# Count set bits
+#
+# AUTHOR: Lubos Kolouch
+#===============================================================================
+
+use strict;
+use warnings;
+
+sub get_dec2bin {
+ my $what = shift;
+
+ my $count;
+
+ for (1..$what) {
+ my $str = unpack("B32", pack("N", $_));
+ $count += () = $str =~ /1/g;
+ }
+
+ return $count % 1_000_000_007;
+}
+
+use Test::More;
+
+is(get_dec2bin(4), 5, 'Test 4');
+is(get_dec2bin(3), 4, 'Test 3');
+
+done_testing;
+
+
diff --git a/challenge-079/lubos-kolouch/perl/ch-2.pl b/challenge-079/lubos-kolouch/perl/ch-2.pl
new file mode 100644
index 0000000000..6ad5f8dad4
--- /dev/null
+++ b/challenge-079/lubos-kolouch/perl/ch-2.pl
@@ -0,0 +1,57 @@
+#!/bin/env perl
+#===============================================================================
+#
+# FILE: ch-2.py
+#
+# USAGE: ./ch-2.py
+#
+# DESCRIPTION: Perl Weekly Challenge Task 2
+# https://perlweeklychallenge.org/blog/perl-weekly-challenge-079/
+# Trapper Rain Water
+#
+# AUTHOR: Lubos Kolouch
+#==============================================================================
+use strict;
+use warnings;
+use List::Util qw/max min/;
+
+sub trapWater{
+
+ my $arr =shift;
+
+ my $n = scalar @$arr;
+ my $left_max = 0;
+ my $right_max = 0;
+
+ my $water = 0;
+
+ my $low = 0;
+ my $high = $n - 1;
+
+ while ($low <= $high) {
+ if ($arr->[$low] < $arr->[$high]) {
+ if ($arr->[$low] > $left_max) {
+ $left_max = $arr->[$low];
+ } else {
+ $water += $left_max - $arr->[$low];
+ }
+ $low += 1;
+ } else {
+ if ($arr->[$high] > $right_max) {
+ $right_max = $arr->[$high];
+ } else {
+ $water += $right_max - $arr->[$high];
+ }
+ $high -= 1;
+ }
+ }
+
+ return $water;
+}
+
+use Test::More;
+
+is(trapWater([2, 1, 4, 1, 2, 5]), 6);
+is(trapWater([3, 1, 3, 1, 1, 5]), 6);
+
+done_testing;
diff --git a/challenge-079/lubos-kolouch/python/ch-1.py b/challenge-079/lubos-kolouch/python/ch-1.py
new file mode 100644
index 0000000000..18cd9792cd
--- /dev/null
+++ b/challenge-079/lubos-kolouch/python/ch-1.py
@@ -0,0 +1,30 @@
+#!/bin/env python
+"""
+===============================================================================
+#
+# FILE: ch-1.py
+#
+# USAGE: ./ch-1.py
+#
+# DESCRIPTION: Perl Weekly Challenge Task 1
+# https://perlweeklychallenge.org/blog/perl-weekly-challenge-079/
+# Count set bits
+#
+# AUTHOR: Lubos Kolouch
+#==============================================================================
+"""
+
+
+def get_dec2bin(what: int):
+ """ Get the number of set 1s """
+
+ count = 0
+ for i in range(1, what+1):
+ mod_str = str(bin(i))[2:]
+ count += sum(list(map(int, mod_str)))
+
+ return count
+
+
+assert get_dec2bin(4) == 5
+assert get_dec2bin(3) == 4
diff --git a/challenge-079/lubos-kolouch/python/ch-2.py b/challenge-079/lubos-kolouch/python/ch-2.py
new file mode 100644
index 0000000000..31e0534f51
--- /dev/null
+++ b/challenge-079/lubos-kolouch/python/ch-2.py
@@ -0,0 +1,40 @@
+#!/bin/env python
+"""
+===============================================================================
+#
+# FILE: ch-2.py
+#
+# USAGE: ./ch-2.py
+#
+# DESCRIPTION: Perl Weekly Challenge Task 2
+# https://perlweeklychallenge.org/blog/perl-weekly-challenge-079/
+# Trapper Rain Water
+#
+# AUTHOR: Lubos Kolouch
+#==============================================================================
+"""
+
+def trapWater(arr):
+
+ n = len(arr)
+ left = [0]*n
+ right = [0]*n
+
+ water = 0
+
+ left[0] = arr[0]
+ for i in range(1, len(arr)):
+ left[i] = max(left[i-1], arr[i])
+
+ right[n-1] = arr[n-1]
+ for i in range(n-2, -1, -1):
+ right[i] = max(right[i + 1], arr[i])
+
+ for i in range(0, n):
+ water += min(left[i], right[i]) - arr[i]
+
+ return water
+
+assert trapWater([2, 1, 4, 1, 2, 5]) == 6
+assert trapWater([3, 1, 3, 1, 1, 5]) == 6
+