diff options
| -rw-r--r-- | challenge-198/adam-russell/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-198/adam-russell/blog1.txt | 1 | ||||
| -rw-r--r-- | challenge-198/adam-russell/perl/ch-1.pl | 28 | ||||
| -rw-r--r-- | challenge-198/adam-russell/perl/ch-2.pl | 18 | ||||
| -rw-r--r-- | challenge-198/adam-russell/prolog/ch-1.p | 27 | ||||
| -rw-r--r-- | challenge-198/adam-russell/prolog/ch-2.p | 3 |
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). |
