aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuis Mochan <mochan@fis.unam.mx>2024-04-01 10:43:56 -0600
committerLuis Mochan <mochan@fis.unam.mx>2024-04-01 10:43:56 -0600
commit4ad3ae4e7aab284c0a667bd2b8e1417becf5407d (patch)
treeef0ed13e4956af3a99da1f38c37b1054eddbadfb
parentc9be1656455d23b019df372ed14a189133c588b1 (diff)
downloadperlweeklychallenge-club-4ad3ae4e7aab284c0a667bd2b8e1417becf5407d.tar.gz
perlweeklychallenge-club-4ad3ae4e7aab284c0a667bd2b8e1417becf5407d.tar.bz2
perlweeklychallenge-club-4ad3ae4e7aab284c0a667bd2b8e1417becf5407d.zip
Solve PWC263
-rw-r--r--challenge-263/wlmb/blog.txt1
-rwxr-xr-xchallenge-263/wlmb/perl/ch-1.pl15
-rwxr-xr-xchallenge-263/wlmb/perl/ch-2.pl20
3 files changed, 36 insertions, 0 deletions
diff --git a/challenge-263/wlmb/blog.txt b/challenge-263/wlmb/blog.txt
new file mode 100644
index 0000000000..df4b1ab879
--- /dev/null
+++ b/challenge-263/wlmb/blog.txt
@@ -0,0 +1 @@
+https://wlmb.github.io/2024/04/01/PWC263/
diff --git a/challenge-263/wlmb/perl/ch-1.pl b/challenge-263/wlmb/perl/ch-1.pl
new file mode 100755
index 0000000000..ca679844b5
--- /dev/null
+++ b/challenge-263/wlmb/perl/ch-1.pl
@@ -0,0 +1,15 @@
+#!/usr/bin/env perl
+# Perl weekly challenge 263
+# Task 1: Target Index
+#
+# See https://wlmb.github.io/2024/04/01/PWC263/#task-1-target-index
+use v5.36;
+die <<~"FIN" unless @ARGV;
+ Usage: $0 k N0 [N1...]
+ to find the indices of the array N0 N1... (after sorting) for which
+ N_i=k
+ FIN
+my $k=shift;
+my @sorted=sort{$a<=>$b}@ARGV;
+say "k=$k, ints=(@ARGV) -> ",
+ join " ", "(", grep({$sorted[$_]==$k} (0..@sorted-1)), ")";
diff --git a/challenge-263/wlmb/perl/ch-2.pl b/challenge-263/wlmb/perl/ch-2.pl
new file mode 100755
index 0000000000..a4a5dd3337
--- /dev/null
+++ b/challenge-263/wlmb/perl/ch-2.pl
@@ -0,0 +1,20 @@
+#!/usr/bin/env perl
+# Perl weekly challenge 263
+# Task 2: Merge Items
+#
+# See https://wlmb.github.io/2024/04/01/PWC263/#task-2-merge-items
+use v5.36;
+use PDL; # use the perl data language to convert the input to a list of keys-values
+use experimental qw(for_list); # use for list to process key-value pairs
+die <<~"FIN" unless @ARGV;
+ Usage: $0 "[[K11,V11],[K12,V12]...]]" "[[K21,V21],[K22,V22],...]" ...
+ to accumulate all values Vij corresponding to each unique key Kn=Kij
+ FIN
+my @keyvals;
+push @keyvals, pdl($_)->list for @ARGV;
+my %merged;
+for my($key, $val)(@keyvals){
+ $merged{$key}+=$val
+};
+my @result = map {"[$_,$merged{$_}]"} sort {$a cmp $b} keys %merged;
+say "@ARGV -> [@result]";