aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuis Mochan <mochan@fis.unam.mx>2023-03-27 18:16:02 -0600
committerLuis Mochan <mochan@fis.unam.mx>2023-03-27 18:16:02 -0600
commit4749a7e6fc6b4f0a21a582742e195fda3f41e7bb (patch)
tree0c163a040254f2a4f9b92164337d40a220b4f759
parent8915a66de2cb2a724aee5e55ddfc15580cfdf1d5 (diff)
downloadperlweeklychallenge-club-4749a7e6fc6b4f0a21a582742e195fda3f41e7bb.tar.gz
perlweeklychallenge-club-4749a7e6fc6b4f0a21a582742e195fda3f41e7bb.tar.bz2
perlweeklychallenge-club-4749a7e6fc6b4f0a21a582742e195fda3f41e7bb.zip
SOlve PWC210
-rw-r--r--challenge-210/wlmb/blog.txt2
-rwxr-xr-xchallenge-210/wlmb/perl/ch-1.pl12
-rwxr-xr-xchallenge-210/wlmb/perl/ch-2.pl24
3 files changed, 38 insertions, 0 deletions
diff --git a/challenge-210/wlmb/blog.txt b/challenge-210/wlmb/blog.txt
new file mode 100644
index 0000000000..674cd2d271
--- /dev/null
+++ b/challenge-210/wlmb/blog.txt
@@ -0,0 +1,2 @@
+https://wlmb.github.io/2023/03/27/PWC210/
+
diff --git a/challenge-210/wlmb/perl/ch-1.pl b/challenge-210/wlmb/perl/ch-1.pl
new file mode 100755
index 0000000000..94e35f4ba7
--- /dev/null
+++ b/challenge-210/wlmb/perl/ch-1.pl
@@ -0,0 +1,12 @@
+#!/usr/bin/env perl
+# Perl weekly challenge 210
+# Task 1: Kill and Win
+#
+# See https://wlmb.github.io/2023/03/27/PWC210/#task-1-kill-and-win
+use v5.36;
+use List::Util qw(sum);
+die <<~"FIN" unless @ARGV;
+ Usage: $0 N1 [N2...]
+ to get the maximum points when killing the numbers N1 N2...
+ FIN
+say "(@ARGV) -> ", sum @ARGV;
diff --git a/challenge-210/wlmb/perl/ch-2.pl b/challenge-210/wlmb/perl/ch-2.pl
new file mode 100755
index 0000000000..d7d00b1a73
--- /dev/null
+++ b/challenge-210/wlmb/perl/ch-2.pl
@@ -0,0 +1,24 @@
+#!/usr/bin/env perl
+# Perl weekly challenge 210
+# Task 2: Number Collision
+#
+# See https://wlmb.github.io/2023/03/27/PWC210/#task-2-number-collision
+use v5.36;
+use List::Util qw(first);
+die <<~"FIN" unless @ARGV;
+ Usage: $0 N1 [N2...]
+ To find which numbers among N1 N2... survive all collisions
+ FIN
+my @numbers=@ARGV; # copy input
+while(defined( # search for index of next collision
+ my $collision=first {
+ $numbers[$_]>$numbers[$_+1] && $numbers[$_]>=0>=$numbers[$_+1]
+ }
+ 0..@numbers-2
+ )
+ ){
+ splice @numbers, $collision + 1, 1 if $numbers[$collision] > -$numbers[$collision+1];
+ splice @numbers, $collision, 1 if $numbers[$collision] < -$numbers[$collision+1];
+ splice @numbers, $collision, 2 if $numbers[$collision] == -$numbers[$collision+1];
+}
+say "(@ARGV) -> (@numbers)"