diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-08-26 18:05:55 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-26 18:05:55 +0100 |
| commit | 7eac3bf3b426feeca64d168c7f3c9a9ab50b16db (patch) | |
| tree | 61a0c948f575205b95b7fba439fd50062376f46d | |
| parent | f4d2471df3d5b699c059222e8ad39092cf2097cf (diff) | |
| parent | f6d0af34125f8f25261d87ccc9239f4991bc8ce5 (diff) | |
| download | perlweeklychallenge-club-7eac3bf3b426feeca64d168c7f3c9a9ab50b16db.tar.gz perlweeklychallenge-club-7eac3bf3b426feeca64d168c7f3c9a9ab50b16db.tar.bz2 perlweeklychallenge-club-7eac3bf3b426feeca64d168c7f3c9a9ab50b16db.zip | |
Merge pull request #10708 from wlmb/challenges
Solve PWC284
| -rw-r--r-- | challenge-284/wlmb/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-284/wlmb/perl/ch-1.pl | 14 | ||||
| -rwxr-xr-x | challenge-284/wlmb/perl/ch-2.pl | 31 |
3 files changed, 46 insertions, 0 deletions
diff --git a/challenge-284/wlmb/blog.txt b/challenge-284/wlmb/blog.txt new file mode 100644 index 0000000000..bc6ecbf095 --- /dev/null +++ b/challenge-284/wlmb/blog.txt @@ -0,0 +1 @@ +https://wlmb.github.io/2024/08/26/PWC283/ diff --git a/challenge-284/wlmb/perl/ch-1.pl b/challenge-284/wlmb/perl/ch-1.pl new file mode 100755 index 0000000000..f918e73f48 --- /dev/null +++ b/challenge-284/wlmb/perl/ch-1.pl @@ -0,0 +1,14 @@ +#!/usr/bin/env perl +# Perl weekly challenge 283 +# Task 1: Lucky Integer +# +# See https://wlmb.github.io/2024/08/26/PWC283/#task-1-lucky-integer +use v5.36; +use List::Util qw(max); +die <<~"FIN" unless @ARGV; + Usage: $0 N1 N2... + to find the largest lucky number among N1 N2... + FIN +my %frequency_of; +$frequency_of{$_}++ for @ARGV; +say "@ARGV -> ", (max grep {$_==$frequency_of{$_}} keys %frequency_of)//-1; diff --git a/challenge-284/wlmb/perl/ch-2.pl b/challenge-284/wlmb/perl/ch-2.pl new file mode 100755 index 0000000000..4846ef1d98 --- /dev/null +++ b/challenge-284/wlmb/perl/ch-2.pl @@ -0,0 +1,31 @@ +#!/usr/bin/env perl +# Perl weekly challenge 283 +# Task 2: Relative Sort +# +# See https://wlmb.github.io/2024/08/26/PWC283/#task-2-relative-sort +use v5.36; +use experimental qw(for_list); +use Scalar::Util qw(looks_like_number); +use List::Util qw(all); +die <<~"FIN" unless @ARGV && @ARGV%2==0; + Usage: $0 L11 L12 L21 L22... + to sort the elements of the list Li1 using the ranks given by Li2. + Lij is a string containing a list of string separated numbers. + FIN +for my ($list, $order)(@ARGV){ + my @list=split " ", $list; + my @order=split " ", $order; + warn("Expected only numbers: $list; $order"), next + unless all {looks_like_number($_)} (@list, @order); + my %rank_of; + $rank_of{$order[$_]}=$_ for 0..@order-1; + my %is_ranked; + $is_ranked{$_}=defined $rank_of{$_}?1:0 for @list; + my @sorted; + @sorted= sort { + ($is_ranked{$b} <=> $is_ranked{$a}) + || ($rank_of{$a}||0) <=> ($rank_of{$b}||0) + || $a <=> $b + } @list; + say "@list; @order -> @sorted"; +} |
