aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2023-01-09 04:14:39 +0000
committerGitHub <noreply@github.com>2023-01-09 04:14:39 +0000
commit337ba399e111538633148668cced352f773c01ea (patch)
treec378b38f58c77b5e814a7cd5e21cf4a5148cbe2e
parent52382b93d96a281c29976fd55a64e59e8009e266 (diff)
parent9245d5203a66f88f1e2fce4cf4f95cc4f6cef505 (diff)
downloadperlweeklychallenge-club-337ba399e111538633148668cced352f773c01ea.tar.gz
perlweeklychallenge-club-337ba399e111538633148668cced352f773c01ea.tar.bz2
perlweeklychallenge-club-337ba399e111538633148668cced352f773c01ea.zip
Merge pull request #7382 from spazm/week-198
Week 198
-rwxr-xr-xchallenge-198/spazm/perl/ch-1.pl68
-rwxr-xr-xchallenge-198/spazm/perl/ch-2.pl30
2 files changed, 98 insertions, 0 deletions
diff --git a/challenge-198/spazm/perl/ch-1.pl b/challenge-198/spazm/perl/ch-1.pl
new file mode 100755
index 0000000000..94f1bf1dfa
--- /dev/null
+++ b/challenge-198/spazm/perl/ch-1.pl
@@ -0,0 +1,68 @@
+#!/usr/bin/env perl
+use v5.34;
+
+use experimental qw(signatures);
+
+=pod
+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.
+
+=cut
+
+sub find_total_pairs (@ints)
+{
+ return find_total_pairs_sorted( sort(@ints) );
+}
+
+sub find_total_pairs_sorted ( $first, @ints )
+{
+ return 0 unless @ints;
+ my $max_delta = 0;
+ my $max_count = 0;
+ my $previous = $first;
+ for my $i (@ints)
+ {
+ my $delta = $i - $previous;
+ $previous = $i;
+
+ if ( $delta == $max_delta )
+ {
+ $max_count++;
+ }
+ elsif ( $delta > $max_delta )
+ {
+ $max_count = 1;
+ $max_delta = $delta;
+ }
+ }
+ return $max_count;
+}
+
+sub find_total_pairs_sorted_orig ( $first, @ints )
+{
+ return 0 unless @ints;
+ my %gap_pairs;
+ my $max_delta = 0;
+ my $previous = $first;
+ for my $i (@ints)
+ {
+ my $delta = $i - $previous;
+ $gap_pairs{$delta}++;
+ if ( $delta > $max_delta )
+ {
+ $max_delta = $delta;
+ }
+ $previous = $i;
+ }
+ say %gap_pairs;
+ return $gap_pairs{$max_delta};
+}
+
+sub main
+{
+ say "pairs: " . find_total_pairs( 2, 5, 8, 1 );
+ say "pairs: " . find_total_pairs(3);
+}
+
+main();
diff --git a/challenge-198/spazm/perl/ch-2.pl b/challenge-198/spazm/perl/ch-2.pl
new file mode 100755
index 0000000000..5b98bb812d
--- /dev/null
+++ b/challenge-198/spazm/perl/ch-2.pl
@@ -0,0 +1,30 @@
+#!/usr/bin/env perl
+use v5.34;
+
+use experimental qw(signatures);
+use Math::Prime::Util qw(primes);
+
+=pod
+Task 2: Prime Count
+Submitted by: Mohammad S Anwar
+
+You are given an integer $n > 0.
+
+Write a script to print the count of primes less than $n.
+=cut
+
+sub count_of_primes ($n)
+{
+ return scalar @{ primes($n) };
+}
+
+sub main
+{
+ for my $n ( 0, 1, 10, 15, 25 )
+ {
+ printf( "there are %d primes less than %i\n",
+ count_of_primes($n), $n );
+ }
+}
+
+main();