aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Grangaard <granny-github@ofb.net>2023-01-08 18:41:05 -0800
committerAndrew Grangaard <granny-github@ofb.net>2023-01-08 18:41:05 -0800
commit9c504b2b1fc5dbd10a42dc62d57276d9ba640e9a (patch)
tree7fd09ccdb5615b2db030c913e6135dfaffc36ebf
parent30bc90811147ec3a3ccfefa2dff445fee9225d9d (diff)
downloadperlweeklychallenge-club-9c504b2b1fc5dbd10a42dc62d57276d9ba640e9a.tar.gz
perlweeklychallenge-club-9c504b2b1fc5dbd10a42dc62d57276d9ba640e9a.tar.bz2
perlweeklychallenge-club-9c504b2b1fc5dbd10a42dc62d57276d9ba640e9a.zip
@spazm solution for Challenge 198-1
-rwxr-xr-xchallenge-198/spazm/perl/ch-1.pl68
1 files changed, 68 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();