diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2023-08-01 00:01:06 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-01 00:01:06 +0100 |
| commit | 8e2cda294152c7a2117644178a51f5cbe4b8313e (patch) | |
| tree | 776f83ee96469f760c0f335f5ca6c3c47cca9da7 /challenge-228 | |
| parent | c2e7015872e2eab42f14b9df72c5c975aed5d1bf (diff) | |
| parent | bc832b19dd7f9507b7c3b787959b8368c18fe7d9 (diff) | |
| download | perlweeklychallenge-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.pl | 24 | ||||
| -rw-r--r-- | challenge-228/steven-wilson/perl/ch-02.pl | 26 |
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; +} |
