aboutsummaryrefslogtreecommitdiff
path: root/challenge-235
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2023-09-21 10:54:05 +0100
committerGitHub <noreply@github.com>2023-09-21 10:54:05 +0100
commit25d2f804e0ccefd0f8ef6f614b9b2f8e17b5f38e (patch)
tree831b3def9abd94bca2d09ec6b8fe4883d6024722 /challenge-235
parent848719460463783ac2d6a99e07f92f9ff70ff884 (diff)
parent88e191228cea3a24797dc40c58591449c29f6bde (diff)
downloadperlweeklychallenge-club-25d2f804e0ccefd0f8ef6f614b9b2f8e17b5f38e.tar.gz
perlweeklychallenge-club-25d2f804e0ccefd0f8ef6f614b9b2f8e17b5f38e.tar.bz2
perlweeklychallenge-club-25d2f804e0ccefd0f8ef6f614b9b2f8e17b5f38e.zip
Merge pull request #8744 from demerphq/master
Solution to challenge-235 by Yves Orton
Diffstat (limited to 'challenge-235')
-rw-r--r--challenge-235/demerphq/README1
-rw-r--r--challenge-235/demerphq/perl/ch-1.pl44
-rw-r--r--challenge-235/demerphq/perl/ch-2.pl28
3 files changed, 73 insertions, 0 deletions
diff --git a/challenge-235/demerphq/README b/challenge-235/demerphq/README
new file mode 100644
index 0000000000..99efaa8cc6
--- /dev/null
+++ b/challenge-235/demerphq/README
@@ -0,0 +1 @@
+Solution by Yves Orton.
diff --git a/challenge-235/demerphq/perl/ch-1.pl b/challenge-235/demerphq/perl/ch-1.pl
new file mode 100644
index 0000000000..b02f2e98c6
--- /dev/null
+++ b/challenge-235/demerphq/perl/ch-1.pl
@@ -0,0 +1,44 @@
+use strict;
+use warnings;
+use Test::More;
+
+sub check_array {
+ my ($array) = @_;
+
+ my $out_of_order = 0;
+ my $last = $array->[0];
+
+ for (my $i = 1; $i <= $#$array; $i++) {
+ # there are two cases (the last element is redundant here):
+ # A: 3, 10, 4, 5 -> drop the 10
+ # B: 3, 10, 1, 11 -> drop the 1
+ my $this = $array->[$i];
+ if ($last > $this) {
+ $out_of_order++ and return 0;
+ if ($i > 1 and $array->[$i-2] > $array->[$i]) {
+ $this = $array->[$i-1];
+ }
+ }
+ $last = $this;
+ }
+ return 1;
+}
+
+foreach my $test (
+ [ 1, [ 0, 2, 9, 4, 10, 11 ] ],
+ [ 1, [ 0, 2, 9, 4, 6 ] ],
+ [ 0, [ 5, 1, 3, 2] ],
+ [ 1, [ 2, 2, 3 ] ],
+ [ 1, [ 1, 2, 3 ] ],
+ [ 0, [ 1, 2, 3, 2, 1 ] ],
+ [ 0, [ 1, 2, 3, 3, 3, 1, 2, 3 ] ],
+ [ 0, [ 1, 2, 3, 1, 2, 3 ] ],
+ [ 0, [ 1, 2, 3, 2, 3, 2 ] ],
+ [ 1, [ 1, 2, 3, 10, 1, 11, 12, 13 ] ],
+ [ 0, [ 1, 2, 3, 10, 1, 11, 4, 13 ] ],
+) {
+ my ($want, $array)= @$test;
+ my $got = check_array($array) ? 1 : 0;
+ is($got, $want, "Test @$array: want $want");
+}
+done_testing();
diff --git a/challenge-235/demerphq/perl/ch-2.pl b/challenge-235/demerphq/perl/ch-2.pl
new file mode 100644
index 0000000000..69534f5189
--- /dev/null
+++ b/challenge-235/demerphq/perl/ch-2.pl
@@ -0,0 +1,28 @@
+use strict;
+use warnings;
+use Test::More;
+
+sub dupe_zero {
+ my ($array) = @_;
+ my @ret;
+ foreach my $n (@$array) {
+ last if ( push(@ret, $n) == @$array )
+ or ( !$n and push(@ret, $n) == @$array );
+ }
+ return \@ret;
+}
+
+foreach my $test (
+ [ [ 0 ], [ 0 ] ],
+ [ [ 1 ], [ 1 ] ],
+ [ [ 0, 0, ], [ 0, 0 ] ],
+ [ [ 1, 1, ], [ 1, 1 ] ],
+ [ [ 0, 0, 1 ], [ 0, 0, 0] ],
+ [ [ 1, 0, 2, 3, 0, 4, 5, 0 ], [ 1, 0, 0, 2, 3, 0, 0, 4 ] ],
+ [ [ 0, 3, 0, 4, 5 ], [ 0, 0, 3, 0, 0 ] ],
+) {
+ my ($input, $want) = @$test;
+ my $got = dupe_zero($input);
+ is("@$got", "@$want", "Test for '@$input'");
+}
+done_testing();