diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2023-09-21 10:54:05 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-21 10:54:05 +0100 |
| commit | 25d2f804e0ccefd0f8ef6f614b9b2f8e17b5f38e (patch) | |
| tree | 831b3def9abd94bca2d09ec6b8fe4883d6024722 /challenge-235 | |
| parent | 848719460463783ac2d6a99e07f92f9ff70ff884 (diff) | |
| parent | 88e191228cea3a24797dc40c58591449c29f6bde (diff) | |
| download | perlweeklychallenge-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/README | 1 | ||||
| -rw-r--r-- | challenge-235/demerphq/perl/ch-1.pl | 44 | ||||
| -rw-r--r-- | challenge-235/demerphq/perl/ch-2.pl | 28 |
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(); |
