diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-07-08 14:18:51 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-08 14:18:51 +0100 |
| commit | a65fddc21b10129f62945d68f7df8aeeacec1847 (patch) | |
| tree | 8daea4c41733577a026bcccf3cf680680e83f170 | |
| parent | 296f786d64c8e1d2902fcea6c4590ffb93ee6f08 (diff) | |
| parent | ddf1af8b36c77f9ebe1175fdfa711505f1264c0a (diff) | |
| download | perlweeklychallenge-club-a65fddc21b10129f62945d68f7df8aeeacec1847.tar.gz perlweeklychallenge-club-a65fddc21b10129f62945d68f7df8aeeacec1847.tar.bz2 perlweeklychallenge-club-a65fddc21b10129f62945d68f7df8aeeacec1847.zip | |
Merge pull request #10390 from PerlBoy1967/branch-for-challenge-277
w277 - Task 1 & 2
| -rwxr-xr-x | challenge-277/perlboy1967/perl/ch1.pl | 41 | ||||
| -rwxr-xr-x | challenge-277/perlboy1967/perl/ch2.pl | 39 |
2 files changed, 80 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..0cfaa4bcb2 --- /dev/null +++ b/challenge-277/perlboy1967/perl/ch1.pl @@ -0,0 +1,41 @@ +#!/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); + +use List::AllUtils qw(singleton); + +sub countCommon { + my %f; + $f{$_}++ for (singleton(@{$_[0]}),singleton(@{$_[1]})); + grep { $_ == 2 } values %f; +} + +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; |
