aboutsummaryrefslogtreecommitdiff
path: root/challenge-076/mohammad-anwar
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-09-01 10:40:22 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-09-01 10:40:22 +0100
commit822f6240abd1361df0e8ab6b70725e414e09549e (patch)
tree703b29c322720900cb8949b1a9e3106f084b6612 /challenge-076/mohammad-anwar
parent5860460b59b9b17d55b6679d3fb54bff0e4a41f4 (diff)
downloadperlweeklychallenge-club-822f6240abd1361df0e8ab6b70725e414e09549e.tar.gz
perlweeklychallenge-club-822f6240abd1361df0e8ab6b70725e414e09549e.tar.bz2
perlweeklychallenge-club-822f6240abd1361df0e8ab6b70725e414e09549e.zip
- Further tidied up folders.
Diffstat (limited to 'challenge-076/mohammad-anwar')
-rwxr-xr-xchallenge-076/mohammad-anwar/perl/ch-1.t67
-rwxr-xr-xchallenge-076/mohammad-anwar/raku/ch-1.t57
-rwxr-xr-xchallenge-076/mohammad-anwar/raku/ch-2.t106
3 files changed, 0 insertions, 230 deletions
diff --git a/challenge-076/mohammad-anwar/perl/ch-1.t b/challenge-076/mohammad-anwar/perl/ch-1.t
deleted file mode 100755
index c2d32443b5..0000000000
--- a/challenge-076/mohammad-anwar/perl/ch-1.t
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/perl
-
-#
-# Perl Weekly Challenge - 075
-#
-# Task #1: Coins Sum
-#
-# https://perlweeklychallenge.org/blog/perl-weekly-challenge-075
-#
-
-use strict;
-use warnings;
-use Test::More;
-
-is coins_sum(prepare("1, 2"), 5), 3;
-is coins_sum(prepare("1, 2, 3"), 5), 5;
-is coins_sum(prepare("1, 2, 4"), 6), 6;
-is coins_sum(prepare("25, 10, 5"), 30), 5;
-is coins_sum(prepare("9, 6, 5, 1"), 11), 6;
-
-done_testing;
-
-#
-#
-# METHODS
-
-sub coins_sum {
- my ($coins, $sum) = @_;
-
- my $size = $#$coins;
- return 0 if ($size == -1 || $sum <= 0);
-
- my $matrix;
-
- # Sum of 0 can be achieved in one possible way.
- $matrix->[$_][0] = 1 for (0 .. $size+1);
-
- foreach my $i (0 .. $size) {
-
- foreach my $j (1 .. $sum) {
-
- my $include_current = 0;
- my $exclude_current = 0;
-
- if ($coins->[$i] <= $j) {
- $include_current = $matrix->[$i][$j - $coins->[$i]];
- }
-
- if ($i > 0) {
- $exclude_current = $matrix->[$i - 1][$j];
- }
-
- $matrix->[$i][$j] = $include_current + $exclude_current;
- }
- }
-
- return $matrix->[$size][$sum];
-}
-
-sub prepare {
- my ($coins) = @_;
-
- if (defined $coins) {
- $coins =~ s/\s//g;
- return [ split /\,/, $coins ];
- }
-}
diff --git a/challenge-076/mohammad-anwar/raku/ch-1.t b/challenge-076/mohammad-anwar/raku/ch-1.t
deleted file mode 100755
index e1a0e5b656..0000000000
--- a/challenge-076/mohammad-anwar/raku/ch-1.t
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/env raku
-
-#
-# Perl Weekly Challenge - 075
-#
-# Task #1: Coins Sum
-#
-# https://perlweeklychallenge.org/blog/perl-weekly-challenge-075
-#
-
-use Test;
-
-is coins-sum("1, 2", 5), 3, "Coins=[1, 2] Sum=5";
-is coins-sum("1, 2, 3", 5), 5, "Coins=[1, 2, 3] Sum=5";
-is coins-sum("1, 2, 4", 6), 6, "Coins=[1, 2, 4] Sum=6";
-is coins-sum("25, 10, 5", 30), 5, "Coins=[25, 10, 5] Sum=30";
-is coins-sum("9, 6, 5, 1", 11), 6, "Coins=[9, 6, 5, 1] Sum=6";
-
-done-testing;
-
-sub coins-sum(Str $coins is copy, Int $sum) returns Int {
-
- die "ERROR: Invalid coins [$coins].\n"
- unless $coins ~~ /^[\s?\-?\d\,?\s?]+$/;
-
- $coins ~~ s:g/\s//;
- my $_coins = [ $coins.split(',').map({ .Int }) ];
-
- my $size = $_coins.elems;
- return 0 if ($size == 0 || $sum <= 0);
-
- my $matrix;
-
- # Sum of 0 can be achieved in one possible way.
- $matrix.[$_][0] = 1 for (0 .. $size-1);
-
- for 0 .. $size-1 -> $i {
-
- for 1 .. $sum -> $j {
-
- my Int $include-current = 0;
- my Int $exclude-current = 0;
-
- if $_coins.[$i] <= $j {
- $include-current = $matrix.[$i][$j - $_coins.[$i]];
- }
-
- if $i > 0 {
- $exclude-current = $matrix.[$i - 1][$j];
- }
-
- $matrix.[$i][$j] = $include-current + $exclude-current;
- }
- }
-
- return $matrix.[$size-1][$sum];
-}
diff --git a/challenge-076/mohammad-anwar/raku/ch-2.t b/challenge-076/mohammad-anwar/raku/ch-2.t
deleted file mode 100755
index f6e50809da..0000000000
--- a/challenge-076/mohammad-anwar/raku/ch-2.t
+++ /dev/null
@@ -1,106 +0,0 @@
-#!/usr/bin/env raku
-
-#
-# Perl Weekly Challenge - 075
-#
-# Task #2: Largest Rectangle Histogram
-#
-# https://perlweeklychallenge.org/blog/perl-weekly-challenge-075
-#
-
-use Test;
-
-is largest-rectangle-histogram(prepare("2, 1, 4, 5, 3, 7")), 12, "example 1";
-is largest-rectangle-histogram(prepare("3, 2, 3, 5, 7, 5")), 15, "example 2";
-
-done-testing;
-
-#
-#
-# METHODS
-
-sub largest-rectangle-histogram($list where .all ~~ Int) returns Int {
-
- my Int $i = 0;
- my Int $max = 0;
-
- for 0 .. $list.elems-1 -> $i {
-
- my (Int $left, Int $right) = (0, 0);
- $left = go-left($i, $list) if $i > 0;
- $right = go-right($i, $list) if $i < $list.elems;
-
- my $heights = $list.[$i - $left .. $i + $right];
- my $size = $heights.min * $heights.elems;
-
- $max = $size if $size > $max;
- }
-
- return $max;
-}
-
-sub go-left(Int $i is copy, $list where .all ~~ Int) returns Int {
-
- my $c = $list.[$i];
- my $j = 0;
- while $i > 0 {
- $i = $i - 1;
- last if $list.[$i] < $c;
- $j = $j + 1;
- }
-
- return $j;
-}
-
-sub go-right(Int $i is copy, $list where .all ~~ Int) returns Int {
-
- my $c = $list.[$i];
- my $j = 0;
- while $i < $list.elems-1 {
- $i += 1;
- last if $list.[$i] < $c;
- $j += 1;
- }
-
- return $j;
-}
-
-sub chart($list where .all ~~ Int) {
-
- my $max = $list.max;
- my $chart = [];
- my $row = 1;
- for 1 .. $max -> $n {
- my Str $data = "";
- for 0 .. $list.elems-1 -> $i {
- if $row <= $list.[$i] {
- $data ~= " #";
- }
- else {
- $data ~= " ";
- }
- }
-
- $row += 1;
-
- $chart.push: sprintf("%d%s", $n, $data);
- }
-
- my (Str $histogram, Str $line, Str $size) = ("", "", " ");
- $histogram = $chart.reverse.join("\n");
- $line ~= "_ " for 0 .. $list.elems;
- $size ~= $list.join(" ");
-
- return ($histogram, $line, $size).join("\n");
-}
-
-sub prepare(Str $list is copy) {
-
- return unless $list.defined;
-
- die "ERROR: Invalid list [$list].\n"
- unless $list ~~ /^[\s?\-?\d\,?\s?]+$/;
-
- $list ~~ s:g/\s//;
- return [ $list.split(',').map({ .Int }) ];
-}