diff options
| author | Andrew Grangaard <granny-github@ofb.net> | 2023-01-08 18:41:05 -0800 |
|---|---|---|
| committer | Andrew Grangaard <granny-github@ofb.net> | 2023-01-08 18:41:05 -0800 |
| commit | 9c504b2b1fc5dbd10a42dc62d57276d9ba640e9a (patch) | |
| tree | 7fd09ccdb5615b2db030c913e6135dfaffc36ebf | |
| parent | 30bc90811147ec3a3ccfefa2dff445fee9225d9d (diff) | |
| download | perlweeklychallenge-club-9c504b2b1fc5dbd10a42dc62d57276d9ba640e9a.tar.gz perlweeklychallenge-club-9c504b2b1fc5dbd10a42dc62d57276d9ba640e9a.tar.bz2 perlweeklychallenge-club-9c504b2b1fc5dbd10a42dc62d57276d9ba640e9a.zip | |
@spazm solution for Challenge 198-1
| -rwxr-xr-x | challenge-198/spazm/perl/ch-1.pl | 68 |
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(); |
