aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-07-08 14:18:51 +0100
committerGitHub <noreply@github.com>2024-07-08 14:18:51 +0100
commita65fddc21b10129f62945d68f7df8aeeacec1847 (patch)
tree8daea4c41733577a026bcccf3cf680680e83f170
parent296f786d64c8e1d2902fcea6c4590ffb93ee6f08 (diff)
parentddf1af8b36c77f9ebe1175fdfa711505f1264c0a (diff)
downloadperlweeklychallenge-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-xchallenge-277/perlboy1967/perl/ch1.pl41
-rwxr-xr-xchallenge-277/perlboy1967/perl/ch2.pl39
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;