aboutsummaryrefslogtreecommitdiff
path: root/challenge-228
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2023-08-01 00:01:06 +0100
committerGitHub <noreply@github.com>2023-08-01 00:01:06 +0100
commit8e2cda294152c7a2117644178a51f5cbe4b8313e (patch)
tree776f83ee96469f760c0f335f5ca6c3c47cca9da7 /challenge-228
parentc2e7015872e2eab42f14b9df72c5c975aed5d1bf (diff)
parentbc832b19dd7f9507b7c3b787959b8368c18fe7d9 (diff)
downloadperlweeklychallenge-club-8e2cda294152c7a2117644178a51f5cbe4b8313e.tar.gz
perlweeklychallenge-club-8e2cda294152c7a2117644178a51f5cbe4b8313e.tar.bz2
perlweeklychallenge-club-8e2cda294152c7a2117644178a51f5cbe4b8313e.zip
Merge pull request #8482 from oWnOIzRi/week228
add solutions for week 228 in perl
Diffstat (limited to 'challenge-228')
-rw-r--r--challenge-228/steven-wilson/perl/ch-01.pl24
-rw-r--r--challenge-228/steven-wilson/perl/ch-02.pl26
2 files changed, 50 insertions, 0 deletions
diff --git a/challenge-228/steven-wilson/perl/ch-01.pl b/challenge-228/steven-wilson/perl/ch-01.pl
new file mode 100644
index 0000000000..dae4b4e6ba
--- /dev/null
+++ b/challenge-228/steven-wilson/perl/ch-01.pl
@@ -0,0 +1,24 @@
+#!/usr/bin/env perl
+
+use 5.12.0;
+use Test::More;
+
+cmp_ok( sum_unique( ( 2, 1, 3, 2 ) ), '==', 4, "2 unique elements" );
+cmp_ok( sum_unique( ( 1, 1, 1, 1 ) ), '==', 0, "0 unique elements" );
+cmp_ok( sum_unique( ( 2, 1, 3, 4 ) ), '==', 10, "all elements unique" );
+done_testing();
+
+sub sum_unique {
+ my @elements = @_;
+ my %element_count;
+ my $sum = 0;
+ for (@elements) {
+ $element_count{$_}++;
+ }
+ for ( keys %element_count ) {
+ if ( $element_count{$_} == 1 ) {
+ $sum += $_;
+ }
+ }
+ return $sum;
+}
diff --git a/challenge-228/steven-wilson/perl/ch-02.pl b/challenge-228/steven-wilson/perl/ch-02.pl
new file mode 100644
index 0000000000..17b0e0689e
--- /dev/null
+++ b/challenge-228/steven-wilson/perl/ch-02.pl
@@ -0,0 +1,26 @@
+#!/usr/bin/env perl
+
+use 5.12.0;
+use List::Util qw / min /;
+use Test::More;
+
+cmp_ok( empty_array( ( 3, 4, 2 ) ), '==', 5, "array out of order" );
+cmp_ok( empty_array( ( 1, 2, 3 ) ), '==', 3, "array accending order" );
+cmp_ok( empty_array( () ), '==', 0, "array empty" );
+done_testing();
+
+sub empty_array {
+ my @elements = @_;
+ my $ops = 0;
+ while (@elements) {
+ if ( min(@elements) == $elements[0] ) {
+ shift @elements;
+ }
+ else {
+ my $element = shift @elements;
+ push @elements, $element;
+ }
+ $ops++;
+ }
+ return $ops;
+}