From 996f990b197a7867c3dc966cef2e84f9745d2388 Mon Sep 17 00:00:00 2001 From: Adam Russell Date: Sat, 30 Mar 2024 22:52:58 -0400 Subject: initial commit --- challenge-262/adam-russell/perl/ch-1.pl | 35 +++++++++++++++++++++++++++++++++ challenge-262/adam-russell/perl/ch-2.pl | 20 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 challenge-262/adam-russell/perl/ch-1.pl create mode 100644 challenge-262/adam-russell/perl/ch-2.pl diff --git a/challenge-262/adam-russell/perl/ch-1.pl b/challenge-262/adam-russell/perl/ch-1.pl new file mode 100644 index 0000000000..24e45f8055 --- /dev/null +++ b/challenge-262/adam-russell/perl/ch-1.pl @@ -0,0 +1,35 @@ +use v5.38; + +sub max_neg_pos{ + my %m; + $m{-1} = 0; + $m{1} = 0; + do{ + $m{-1}++ if $_ < 0; + $m{1}++ if $_ > 0; + } for @_; + return $m{-1}, $m{1}; +} + +my @max_neg_pos; +my $max; + +@max_neg_pos = max_neg_pos -3, 1, 2, -1, 3, -2, 4; +$max = (sort {$b <=> $a} @max_neg_pos)[0]; +say q/Count of positive integers: / . $max_neg_pos[1]; +say q/Count of negative integers: / . $max_neg_pos[0]; +say q/Maximum of count of positive and negative integers: / . $max; +print qq/\n/; + +@max_neg_pos = max_neg_pos -1, -2, -3, 1; +$max = (sort {$b <=> $a} @max_neg_pos)[0]; +say q/Count of positive integers: / . $max_neg_pos[1]; +say q/Count of negative integers: / . $max_neg_pos[0]; +say q/Maximum of count of positive and negative integers: / . $max; +print qq/\n/; + +@max_neg_pos = max_neg_pos 1, 2; +$max = (sort {$b <=> $a} @max_neg_pos)[0]; +say q/Count of positive integers: / . $max_neg_pos[1]; +say q/Count of negative integers: / . $max_neg_pos[0]; +say q/Maximum of count of positive and negative integers: / . $max; diff --git a/challenge-262/adam-russell/perl/ch-2.pl b/challenge-262/adam-russell/perl/ch-2.pl new file mode 100644 index 0000000000..341e3455ed --- /dev/null +++ b/challenge-262/adam-russell/perl/ch-2.pl @@ -0,0 +1,20 @@ +use v5.38; + +sub count_equal_divisible{ + my($integers, $k, $i, $j, $equal_divisible) = @_; + $i = 0 if !defined $i; + $j = 1 if !defined $j; + $equal_divisible = [] if !defined $equal_divisible; + push @{$equal_divisible}, [$i, $j] if $integers->[$i] == $integers->[$j] && 0 == (($i * $j) % $k); + count_equal_divisible($integers, $k, $i, $j + 1, $equal_divisible) if $j <= @{$integers} - 2; + count_equal_divisible($integers, $k, $i + 1, $i + 2, $equal_divisible) if $j == @{$integers} - 1 && $i < @{$integers} - 2; + return $equal_divisible; +} + +my $r; +$r = count_equal_divisible [3, 1, 2, 2, 2, 1, 3], 2; +print @{$r} . q/: /; +do{ + print q/ [/ . $_->[0] . q/, / . $_->[1] . q/]/; +} for @{$r}; +print qq/\n/; -- cgit