aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2023-05-02 10:14:41 +0100
committerGitHub <noreply@github.com>2023-05-02 10:14:41 +0100
commitf6c84eff9aa4e78b93dbd85cbda20231f6a05f4b (patch)
tree1b80d9b556237db4e09361d4a25ab5332d87c152
parent6229ea6f3fa75571cf12302a89603c31eb6f2745 (diff)
parentcd86d4b94a21f341a721d4ca702caf2c63c07063 (diff)
downloadperlweeklychallenge-club-f6c84eff9aa4e78b93dbd85cbda20231f6a05f4b.tar.gz
perlweeklychallenge-club-f6c84eff9aa4e78b93dbd85cbda20231f6a05f4b.tar.bz2
perlweeklychallenge-club-f6c84eff9aa4e78b93dbd85cbda20231f6a05f4b.zip
Merge pull request #8002 from carlos157oliveira/challenge-215
solution to challenge 215
-rw-r--r--challenge-215/carlos-oliveira/perl/ch-1.pl20
-rw-r--r--challenge-215/carlos-oliveira/perl/ch-2.pl31
2 files changed, 51 insertions, 0 deletions
diff --git a/challenge-215/carlos-oliveira/perl/ch-1.pl b/challenge-215/carlos-oliveira/perl/ch-1.pl
new file mode 100644
index 0000000000..6ad2db904e
--- /dev/null
+++ b/challenge-215/carlos-oliveira/perl/ch-1.pl
@@ -0,0 +1,20 @@
+use strict;
+use warnings;
+use v5.36;
+
+use Test::More;
+
+sub out_with_the_odds ($words) {
+ my $original_size = @$words;
+ @$words = grep {
+ my @letters = sort split //, $_;
+ join('', @letters) eq $_;
+ } @$words;
+ return $original_size - @$words;
+}
+
+is out_with_the_odds(['abc', 'xyz', 'tsu']), 1;
+is out_with_the_odds(['rat', 'cab', 'dad']), 3;
+is out_with_the_odds(['x', 'y', 'z']), 0;
+
+done_testing;
diff --git a/challenge-215/carlos-oliveira/perl/ch-2.pl b/challenge-215/carlos-oliveira/perl/ch-2.pl
new file mode 100644
index 0000000000..8f6f3a7c05
--- /dev/null
+++ b/challenge-215/carlos-oliveira/perl/ch-2.pl
@@ -0,0 +1,31 @@
+use strict;
+use warnings;
+use v5.36;
+use builtin qw(true false);
+
+use Test::More;
+use List::Util qw(all);
+
+sub place_ones ($placement_total, $numbers) {
+ my @numbers = @$numbers;
+ my $placement_count = 0;
+ my $interval = 2;
+ for (
+ my $i = 0;
+ $i < @numbers - $interval && $placement_count < $placement_total;
+ $i++
+ ) {
+ next unless all { $_ == 0 } @numbers[$i .. $i+$interval];
+ $placement_count++;
+ # skip a number since the middle of this interval will be replaced with "1"
+ $i++;
+ }
+ return $placement_count == $placement_total;
+}
+
+is place_ones(1, [1,0,0,0,1]), true;
+is place_ones(2, [1,0,0,0,1]), false;
+is place_ones(3, [1,0,0,0,0,0,0,0,1]), true;
+is place_ones(4, [1,0,0,0,0,0,0,0,1]), false;
+
+done_testing;