diff options
| -rw-r--r-- | challenge-262/adam-russell/perl/ch-1.pl | 35 | ||||
| -rw-r--r-- | challenge-262/adam-russell/perl/ch-2.pl | 20 |
2 files changed, 55 insertions, 0 deletions
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/; |
