aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2023-01-08 23:35:48 +0000
committerGitHub <noreply@github.com>2023-01-08 23:35:48 +0000
commitfc8f7ca51ee00de6765cb916cd86b0c940b9704e (patch)
tree5cb2d7c5fa4d6faf9935551e904c5d618cf8d962
parent7df9192d09fb0a838dda2bb6a1a4647173f9b062 (diff)
parenta3eff0a5b73bfaf6bac05993ae380be4b64c47c6 (diff)
downloadperlweeklychallenge-club-fc8f7ca51ee00de6765cb916cd86b0c940b9704e.tar.gz
perlweeklychallenge-club-fc8f7ca51ee00de6765cb916cd86b0c940b9704e.tar.bz2
perlweeklychallenge-club-fc8f7ca51ee00de6765cb916cd86b0c940b9704e.zip
Merge pull request #7376 from adamcrussell/challenge-198
Challenge 198
-rw-r--r--challenge-198/adam-russell/blog.txt1
-rw-r--r--challenge-198/adam-russell/blog1.txt1
-rw-r--r--challenge-198/adam-russell/perl/ch-1.pl28
-rw-r--r--challenge-198/adam-russell/perl/ch-2.pl18
-rw-r--r--challenge-198/adam-russell/prolog/ch-1.p27
-rw-r--r--challenge-198/adam-russell/prolog/ch-2.p3
6 files changed, 78 insertions, 0 deletions
diff --git a/challenge-198/adam-russell/blog.txt b/challenge-198/adam-russell/blog.txt
new file mode 100644
index 0000000000..be1fd20ef6
--- /dev/null
+++ b/challenge-198/adam-russell/blog.txt
@@ -0,0 +1 @@
+http://www.rabbitfarm.com/cgi-bin/blosxom/perl/2023/01/08
diff --git a/challenge-198/adam-russell/blog1.txt b/challenge-198/adam-russell/blog1.txt
new file mode 100644
index 0000000000..230b6575d7
--- /dev/null
+++ b/challenge-198/adam-russell/blog1.txt
@@ -0,0 +1 @@
+http://www.rabbitfarm.com/cgi-bin/blosxom/prolog/2023/01/08
diff --git a/challenge-198/adam-russell/perl/ch-1.pl b/challenge-198/adam-russell/perl/ch-1.pl
new file mode 100644
index 0000000000..5b0cdcb498
--- /dev/null
+++ b/challenge-198/adam-russell/perl/ch-1.pl
@@ -0,0 +1,28 @@
+use v5.36;
+##
+# You are given a list of integers, @list.
+# Write a script to find the total pairs in the
+# sorted list where 2 consecutive elements has the max gap.
+# If the list contains less then 2 elements then return 0.
+##
+sub largest_gap{
+ my(@numbers) = @_;
+ my $gap = -1;
+ map{ $gap = $numbers[$_] - $numbers[$_ - 1] if $numbers[$_] - $numbers[$_ - 1] > $gap } 1 .. @numbers - 1;
+ return $gap;
+}
+
+sub gap_pairs{
+ my(@numbers) = @_;
+ return 0 if @numbers < 2;
+ my $gap = largest_gap(@numbers);
+ my $gap_count;
+ map { $gap_count++ if $numbers[$_] - $numbers[$_ - 1] == $gap } 1 .. @numbers - 1;
+ return $gap_count;
+
+}
+
+MAIN:{
+ say gap_pairs(3);
+ say gap_pairs(2, 5, 8, 1);
+}
diff --git a/challenge-198/adam-russell/perl/ch-2.pl b/challenge-198/adam-russell/perl/ch-2.pl
new file mode 100644
index 0000000000..8ccfa00489
--- /dev/null
+++ b/challenge-198/adam-russell/perl/ch-2.pl
@@ -0,0 +1,18 @@
+use v5.36;
+##
+# You are given an integer $n > 0.
+# Write a script to print the count of primes less than $n.
+##
+use Math::Primality q/is_prime/;
+
+sub prime_count{
+ return 0 + grep { is_prime $_ } 2 .. $_[0] - 1;
+}
+
+
+MAIN:{
+ say prime_count(10);
+ say prime_count(15);
+ say prime_count(1);
+ say prime_count(25);
+}
diff --git a/challenge-198/adam-russell/prolog/ch-1.p b/challenge-198/adam-russell/prolog/ch-1.p
new file mode 100644
index 0000000000..d4cddb11af
--- /dev/null
+++ b/challenge-198/adam-russell/prolog/ch-1.p
@@ -0,0 +1,27 @@
+largest_gap(Numbers, LargestGap):-
+ largest_gap(Numbers, -1, LargestGap).
+largest_gap([], LargestGap, LargestGap).
+largest_gap([_|[]], LargestGap, LargestGap).
+largest_gap([A, B|Numbers], Gap, LargestGap):-
+ G is B - A,
+ (G > Gap, largest_gap([B|Numbers], G, LargestGap));
+ largest_gap([B|Numbers], Gap, LargestGap).
+
+gap_pairs(Numbers, GapPairs):-
+ length(Numbers, L),
+ L =< 2,
+ GapPairs = 0.
+gap_pairs(Numbers, GapPairs):-
+ length(Numbers, L),
+ L > 2,
+ largest_gap(Numbers, LargestGap),
+ gap_pairs(Numbers, LargestGap, 0, GapPairs).
+gap_pairs([], _, GapPairs, GapPairs).
+gap_pairs([_|[]], _, GapPairs, GapPairs).
+gap_pairs([A, B|Numbers], LargestGap, Pairs, GapPairs):-
+ LargestGap #= B - A,
+ succ(Pairs, P),
+ gap_pairs([B|Numbers], LargestGap, P, GapPairs).
+gap_pairs([A, B|Numbers], LargestGap, Pairs, GapPairs):-
+ LargestGap #\= B - A,
+ gap_pairs([B|Numbers], LargestGap, Pairs, GapPairs).
diff --git a/challenge-198/adam-russell/prolog/ch-2.p b/challenge-198/adam-russell/prolog/ch-2.p
new file mode 100644
index 0000000000..1dcc4e41a7
--- /dev/null
+++ b/challenge-198/adam-russell/prolog/ch-2.p
@@ -0,0 +1,3 @@
+primes_under_n(N, NumberPrimes):-
+ findall(Prime, (between(2, N, I), fd_prime(I), Prime = I), Primes),
+ length(Primes, NumberPrimes).