aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-320/peter-campbell-smith/blog.txt1
-rwxr-xr-xchallenge-320/peter-campbell-smith/perl/ch-1.pl32
-rwxr-xr-xchallenge-320/peter-campbell-smith/perl/ch-2.pl31
3 files changed, 64 insertions, 0 deletions
diff --git a/challenge-320/peter-campbell-smith/blog.txt b/challenge-320/peter-campbell-smith/blog.txt
new file mode 100644
index 0000000000..fc4be057a3
--- /dev/null
+++ b/challenge-320/peter-campbell-smith/blog.txt
@@ -0,0 +1 @@
+http://ccgi.campbellsmiths.force9.co.uk/challenge/320
diff --git a/challenge-320/peter-campbell-smith/perl/ch-1.pl b/challenge-320/peter-campbell-smith/perl/ch-1.pl
new file mode 100755
index 0000000000..038fde0544
--- /dev/null
+++ b/challenge-320/peter-campbell-smith/perl/ch-1.pl
@@ -0,0 +1,32 @@
+#!/usr/bin/perl
+
+# Blog: http://ccgi.campbellsmiths.force9.co.uk/challenge
+
+use v5.26; # The Weekly Challenge - 2025-05-05
+use utf8; # Week 320 - task 1 - Maximum count
+use warnings; # Peter Campbell Smith
+binmode STDOUT, ':utf8';
+use Encode;
+
+maximum_count(-3, -2, -1, 1, 2, 3);
+maximum_count(-2, -1, 0, 0, 1);
+maximum_count(1, 2, 3, 4);
+maximum_count(0, 0, 0);
+
+# larger example
+my @nums;
+push @nums, int(rand(41)) - 20 for 0 .. 99;
+maximum_count(@nums);
+
+sub maximum_count {
+
+ my %count = (pos => 0, neg => 0, zero => 0);
+
+ # count +ves, -ves and 0s
+ $count{$_ < 0 ? 'neg' : ($_ > 0 ? 'pos' : 'zero')} ++ for @_;
+
+ # report
+ say qq[\nInput: (] . join (', ', @_) . ')';;
+ say qq[Output: ] . ($count{pos} > $count{neg} ? $count{pos} : $count{neg}) .
+ qq[ ($count{neg} negative, $count{pos} positive, $count{zero} zero)];
+}
diff --git a/challenge-320/peter-campbell-smith/perl/ch-2.pl b/challenge-320/peter-campbell-smith/perl/ch-2.pl
new file mode 100755
index 0000000000..57750641c6
--- /dev/null
+++ b/challenge-320/peter-campbell-smith/perl/ch-2.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+
+# Blog: http://ccgi.campbellsmiths.force9.co.uk/challenge
+
+use v5.26; # The Weekly Challenge - 2025-05-05
+use utf8; # Week 320 - task 2 - Sum difference
+use warnings; # Peter Campbell Smith
+binmode STDOUT, ':utf8';
+use Encode;
+
+sum_difference(1, 23, 4, 5);
+sum_difference(1, 2, 3, 4, 5);
+sum_difference(1, 2, 34);
+
+# larger example
+my @nums;
+push @nums, int(rand(1000)) for 0 .. 99;
+sum_difference(@nums);
+
+sub sum_difference {
+
+ my (@integers, $elements, $digits);
+ @integers = @_;
+
+ # make the desired sums
+ $elements += $_ for @integers;
+ $digits = eval(join('+', split('', join('', @integers))));
+
+ say qq[\nInput: (] . join(', ', @integers) . q[)];
+ say qq[Output: ] . ($elements - $digits) . qq[ (elements = $elements, digits = $digits)];
+}