diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-05-06 19:06:05 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-06 19:06:05 +0100 |
| commit | 7fa205e276d4f05891701bf769dba9c2e4ecad40 (patch) | |
| tree | ddc2f231ef4c41887a5b4fe5c9cb1248989dd2fa | |
| parent | 8155b0e7b32c7918210367d40d14e1bd2aba174b (diff) | |
| parent | 4a7e6e23bfd82d8e8a03a0bd507e90437e8f158f (diff) | |
| download | perlweeklychallenge-club-7fa205e276d4f05891701bf769dba9c2e4ecad40.tar.gz perlweeklychallenge-club-7fa205e276d4f05891701bf769dba9c2e4ecad40.tar.bz2 perlweeklychallenge-club-7fa205e276d4f05891701bf769dba9c2e4ecad40.zip | |
Merge pull request #11990 from wanderdoc/master
PWC 320 solutions (wanderdoc)
| -rw-r--r-- | challenge-320/wanderdoc/perl/ch-1.pl | 60 | ||||
| -rw-r--r-- | challenge-320/wanderdoc/perl/ch-2.pl | 56 |
2 files changed, 116 insertions, 0 deletions
diff --git a/challenge-320/wanderdoc/perl/ch-1.pl b/challenge-320/wanderdoc/perl/ch-1.pl new file mode 100644 index 0000000000..8312b620fb --- /dev/null +++ b/challenge-320/wanderdoc/perl/ch-1.pl @@ -0,0 +1,60 @@ +#!perl +use strict; +use warnings FATAL => qw(all); + +=prompt +You are given an array of integers. +Write a script to return the maximum between the number of positive and negative integers. Zero is neither positive nor negative. + +Example 1 + +Input: @ints = (-3, -2, -1, 1, 2, 3) +Output: 3 + +There are 3 positive integers. +There are 3 negative integers. +The maximum between 3 and 3 is 3. + + +Example 2 + +Input: @ints = (-2, -1, 0, 0, 1) +Output: 2 + +There are 1 positive integers. +There are 2 negative integers. +The maximum between 2 and 1 is 2. + + +Example 3 + +Input: @ints = (1, 2, 3, 4) +Output: 4 + +There are 4 positive integers. +There are 0 negative integers. +The maximum between 4 and 0 is 4. +=cut + + + +use List::Util qw(max); +use Test2::V0 -no_srand => 1; + +is(max_count(-3, -2, -1, 1, 2, 3), 3, 'Example 1'); +is(max_count(-2, -1, 0, 0, 1), 2, 'Example 2'); +is(max_count(1, 2, 3, 4), 4, 'Example 3'); +done_testing(); + + +sub max_count +{ + my @arr = @_; + my $pos = my $neg = 0; + for my $elm ( @arr ) + { + if ($elm > 0) {$pos++;} + elsif ($elm < 0 ) {$neg++;} + } + return max($pos, $neg); +} diff --git a/challenge-320/wanderdoc/perl/ch-2.pl b/challenge-320/wanderdoc/perl/ch-2.pl new file mode 100644 index 0000000000..60b2981356 --- /dev/null +++ b/challenge-320/wanderdoc/perl/ch-2.pl @@ -0,0 +1,56 @@ +#!perl +use strict; +use warnings FATAL => qw(all); + +=prompt +You are given an array of positive integers. +Write a script to return the absolute difference between digit sum and element sum of the given array. + +Example 1 + +Input: @ints = (1, 23, 4, 5) +Output: 18 + +Element sum: 1 + 23 + 4 + 5 => 33 +Digit sum: 1 + 2 + 3 + 4 + 5 => 15 +Absolute difference: | 33 - 15 | => 18 + + +Example 2 + +Input: @ints = (1, 2, 3, 4, 5) +Output: 0 + +Element sum: 1 + 2 + 3 + 4 + 5 => 15 +Digit sum: 1 + 2 + 3 + 4 + 5 => 15 +Absolute difference: | 15 - 15 | => 0 + + +Example 3 + +Input: @ints = (1, 2, 34) +Output: 27 + +Element sum: 1 + 2 + 34 => 37 +Digit sum: 1 + 2 + 3 + 4 => 10 +Absolute difference: | 37 - 10 | => 27 +=cut + + + +use List::Util qw(sum); +use Test2::V0 -no_srand => 1; + +is(sum_difference(1, 23, 4, 5), 18, 'Example 1'); +is(sum_difference(1, 2, 3, 4, 5), 0, 'Example 2'); +is(sum_difference(1, 2, 34), 27, 'Example 3'); + +done_testing(); + +sub sum_difference +{ + my @arr = @_; + my $elm_sum = sum(@arr); + my $digit_sum = sum( map { split(//, $_) } @arr ); + return abs($elm_sum - $digit_sum); +} |
