diff options
| author | Luis Mochan <mochan@fis.unam.mx> | 2024-04-01 10:43:56 -0600 |
|---|---|---|
| committer | Luis Mochan <mochan@fis.unam.mx> | 2024-04-01 10:43:56 -0600 |
| commit | 4ad3ae4e7aab284c0a667bd2b8e1417becf5407d (patch) | |
| tree | ef0ed13e4956af3a99da1f38c37b1054eddbadfb | |
| parent | c9be1656455d23b019df372ed14a189133c588b1 (diff) | |
| download | perlweeklychallenge-club-4ad3ae4e7aab284c0a667bd2b8e1417becf5407d.tar.gz perlweeklychallenge-club-4ad3ae4e7aab284c0a667bd2b8e1417becf5407d.tar.bz2 perlweeklychallenge-club-4ad3ae4e7aab284c0a667bd2b8e1417becf5407d.zip | |
Solve PWC263
| -rw-r--r-- | challenge-263/wlmb/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-263/wlmb/perl/ch-1.pl | 15 | ||||
| -rwxr-xr-x | challenge-263/wlmb/perl/ch-2.pl | 20 |
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]"; |
