diff options
| author | Niels van Dijke <perlboy@cpan.org> | 2024-07-08 06:14:12 +0000 |
|---|---|---|
| committer | Niels van Dijke <perlboy@cpan.org> | 2024-07-08 06:14:12 +0000 |
| commit | 6066e198454df3c3db2740708c880aa48d27a25b (patch) | |
| tree | a3bd243c254b1b209f3c6a07340d78337cf27539 | |
| parent | 996112d2e3daa2be2425e08aec3ce172f71b841b (diff) | |
| download | perlweeklychallenge-club-6066e198454df3c3db2740708c880aa48d27a25b.tar.gz perlweeklychallenge-club-6066e198454df3c3db2740708c880aa48d27a25b.tar.bz2 perlweeklychallenge-club-6066e198454df3c3db2740708c880aa48d27a25b.zip | |
w277 - Task 1 & 2
| -rwxr-xr-x | challenge-277/perlboy1967/perl/ch1.pl | 43 | ||||
| -rwxr-xr-x | challenge-277/perlboy1967/perl/ch2.pl | 39 |
2 files changed, 82 insertions, 0 deletions
diff --git a/challenge-277/perlboy1967/perl/ch1.pl b/challenge-277/perlboy1967/perl/ch1.pl new file mode 100755 index 0000000000..1ced4da647 --- /dev/null +++ b/challenge-277/perlboy1967/perl/ch1.pl @@ -0,0 +1,43 @@ +#!/bin/perl + +=pod + +The Weekly Challenge - 277 +- https://theweeklychallenge.org/blog/perl-weekly-challenge-277 + +Author: Niels 'PerlBoy' van Dijke + +Task 1: Count Common +Submitted by: Mohammad Sajid Anwar + +You are given two array of strings, @words1 and @words2. + +Write a script to return the count of words that appears in both +arrays exactly once. + +=cut + +use v5.32; +use feature qw(signatures); +use common::sense; + +use Test2::V0 qw(-no_srand); + +sub countCommon { + my ($arW1,$arW2,%f1,%f2,%fc) = @_; + map { $f1{$_}++ } @$arW1; + map { $f2{$_}++ } @$arW2; + map { $fc{$_}++ } + (grep { $f1{$_} == 1 } keys %f1), + (grep { $f2{$_} == 1 } keys %f2); + scalar grep { $_ == 2 } values %fc; +} + +is(countCommon([qw{Perl is my friend}], + [qw{Perl and Raku are friend}]),2); +is(countCommon([qw{Perl and Python are very similar}], + [qw{Python is top in guest languages}]),1); +is(countCommon([qw{Perl is imperative Lisp is functional}], + [qw{Crystal is similar to Ruby}]),0); + +done_testing; diff --git a/challenge-277/perlboy1967/perl/ch2.pl b/challenge-277/perlboy1967/perl/ch2.pl new file mode 100755 index 0000000000..1b4ee2cbdb --- /dev/null +++ b/challenge-277/perlboy1967/perl/ch2.pl @@ -0,0 +1,39 @@ +#!/bin/perl + +=pod + +The Weekly Challenge - 277 +- https://theweeklychallenge.org/blog/perl-weekly-challenge-277 + +Author: Niels 'PerlBoy' van Dijke + +Task 2: Strong Pair +Submitted by: Mohammad Sajid Anwar + +You are given an array of integers, @ints. + +Write a script to return the count of all strong pairs in the given array. + +|| A pair of integers x and y is called strong pair if it satisfies: +|| 0 < |x - y| < min(x, y). + +=cut + +use v5.32; +use feature qw(signatures); +use common::sense; + +use Test2::V0 qw(-no_srand); + +use Algorithm::Combinatorics qw(combinations); +use List::AllUtils qw(min uniq); + +sub strongPair (@ints) { + @ints = uniq(@ints); + scalar grep { abs($$_[0]-$$_[1]) < min(@$_) } combinations(\@ints,2); +} + +is(strongPair(1..5),4); +is(strongPair(5,7,1,7),1); + +done_testing; |
