aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-01-28 10:31:47 +0000
committerGitHub <noreply@github.com>2025-01-28 10:31:47 +0000
commit1ecfee25379e1040319227713021b3548dea3320 (patch)
tree4c1031f8caaf280dbfe704483cbe3b0ed82d2a44
parent659c8e2f927ebddf57f311aa8304d8ad427afdff (diff)
parentf38cef5aeacfc827a81475e3c0872fa1f27dfb80 (diff)
downloadperlweeklychallenge-club-1ecfee25379e1040319227713021b3548dea3320.tar.gz
perlweeklychallenge-club-1ecfee25379e1040319227713021b3548dea3320.tar.bz2
perlweeklychallenge-club-1ecfee25379e1040319227713021b3548dea3320.zip
Merge pull request #11498 from pjcs00/wk306
Week 306 - Odd game
-rw-r--r--challenge-306/peter-campbell-smith/blog.txt1
-rwxr-xr-xchallenge-306/peter-campbell-smith/perl/ch-1.pl32
-rwxr-xr-xchallenge-306/peter-campbell-smith/perl/ch-2.pl38
3 files changed, 71 insertions, 0 deletions
diff --git a/challenge-306/peter-campbell-smith/blog.txt b/challenge-306/peter-campbell-smith/blog.txt
new file mode 100644
index 0000000000..991e574038
--- /dev/null
+++ b/challenge-306/peter-campbell-smith/blog.txt
@@ -0,0 +1 @@
+http://ccgi.campbellsmiths.force9.co.uk/challenge/306
diff --git a/challenge-306/peter-campbell-smith/perl/ch-1.pl b/challenge-306/peter-campbell-smith/perl/ch-1.pl
new file mode 100755
index 0000000000..7d7c79b005
--- /dev/null
+++ b/challenge-306/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 - 2024-12-27
+use utf8; # Week 306 - task 1 - Odd sum
+use warnings; # Peter Campbell Smith
+binmode STDOUT, ':utf8';
+
+odd_sum(2, 5, 3, 6, 4);
+odd_sum(99);
+odd_sum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20);
+
+sub odd_sum {
+
+ my (@ints, $sum, $start, $end);
+
+ # initialise
+ @ints = @_;
+ $sum = 0;
+
+ # loop over start and end points
+ for $start (0 .. $#ints) {
+ for ($end = $start; $end <= $#ints; $end += 2) {
+ $sum += $ints[$_] for $start .. $end;
+ }
+ }
+
+ # report
+ say qq[\nInput: \@ints = (] . join(', ', @ints) . qq[)];
+ say qq[Output: $sum];
+}
diff --git a/challenge-306/peter-campbell-smith/perl/ch-2.pl b/challenge-306/peter-campbell-smith/perl/ch-2.pl
new file mode 100755
index 0000000000..128bd50ec0
--- /dev/null
+++ b/challenge-306/peter-campbell-smith/perl/ch-2.pl
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+
+# Blog: http://ccgi.campbellsmiths.force9.co.uk/challenge
+
+use v5.26; # The Weekly Challenge - 2024-12-27
+use utf8; # Week 306 - task 2 - Last element
+use warnings; # Peter Campbell Smith
+binmode STDOUT, ':utf8';
+
+last_element(3, 8, 5, 2, 9, 2);
+last_element(3, 2, 5);
+last_element(43, 21, 56, 86, 2, 69, 10, 43, 77, 30);
+
+sub last_element {
+
+ my (@ints, $x);
+
+ # initialise
+ @ints = @_;
+ say qq[\nInput: \@ints = (] . join(', ', @_) . ')';
+
+ # loop until 0 or 1 element left
+ while ($#ints > 0) {
+ @ints = sort {$b <=> $a} @ints;
+
+ # if x == y
+ if ($ints[0] == $ints[1]) {
+ shift @ints;
+ shift @ints;
+
+ # if x != y
+ } else {
+ $x = shift @ints;
+ $ints[0] = $x - $ints[0];
+ }
+ }
+ say qq[Output: ] . ($ints[0] or 0);
+}