From f555001a1eb274defde54947ef58881b4b0b5831 Mon Sep 17 00:00:00 2001 From: KjetilS Date: Mon, 26 Aug 2024 20:05:26 +0200 Subject: https://theweeklychallenge.org/blog/perl-weekly-challenge-284/ --- challenge-284/kjetillll/perl/ch-1.pl | 13 +++++++++++++ challenge-284/kjetillll/perl/ch-2.pl | 12 ++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 challenge-284/kjetillll/perl/ch-1.pl create mode 100644 challenge-284/kjetillll/perl/ch-2.pl diff --git a/challenge-284/kjetillll/perl/ch-1.pl b/challenge-284/kjetillll/perl/ch-1.pl new file mode 100644 index 0000000000..cd1a605a74 --- /dev/null +++ b/challenge-284/kjetillll/perl/ch-1.pl @@ -0,0 +1,13 @@ +use strict; use warnings; use List::Util 'max'; use Test::More tests=>3; + + +sub lucky_integer { + my %freq; $freq{$_}++ for @_; + max -1, grep $_ == $freq{$_}, keys %freq +} + + +is lucky_integer(2, 2, 3, 4) => 2; +is lucky_integer(1, 2, 2, 3, 3, 3) => 3; +is lucky_integer(1, 1, 1, 3) => -1; + diff --git a/challenge-284/kjetillll/perl/ch-2.pl b/challenge-284/kjetillll/perl/ch-2.pl new file mode 100644 index 0000000000..97dd58d7a3 --- /dev/null +++ b/challenge-284/kjetillll/perl/ch-2.pl @@ -0,0 +1,12 @@ +use strict; use warnings; use List::Util 'max'; use Test::More tests=>3; + + +sub relative_sort { + my( $list1, $list2 ) = @_; + my %rank = map { $$list2[$_] => $_ } 0 .. $#$list2; + sort { ( $rank{$a} // 9e9 ) <=> ( $rank{$b} // 9e9 ) or $a <=> $b } @$list1; +} + +is_deeply [ relative_sort( [2,3,9,3,1,4,6,7,2,8,5], [2,1,4,3,5,6] ) ] => [2,2,1,4,3,3,5,6,7,8,9]; +is_deeply [ relative_sort( [3,3,4,6,2,4,2,1,3], [1,3,2] ) ] => [1,3,3,3,2,2,4,4,6]; +is_deeply [ relative_sort( [3,0,5,0,2,1,4,1,1], [1,0,3,2] ) ] => [1,1,1,0,0,3,2,4,5]; -- cgit