aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Eduardo de Oliveira <carlos157oliveira@gmail.com>2023-05-01 11:34:15 -0300
committerCarlos Eduardo de Oliveira <carlos157oliveira@gmail.com>2023-05-01 11:37:38 -0300
commitcd86d4b94a21f341a721d4ca702caf2c63c07063 (patch)
treee97339012cac9b2a51ca58bd66e5b90fe30269d9
parent6cc2e38f43011f65d7deaf1e03cf55e4306a53e5 (diff)
downloadperlweeklychallenge-club-cd86d4b94a21f341a721d4ca702caf2c63c07063.tar.gz
perlweeklychallenge-club-cd86d4b94a21f341a721d4ca702caf2c63c07063.tar.bz2
perlweeklychallenge-club-cd86d4b94a21f341a721d4ca702caf2c63c07063.zip
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;