Initial commit
This commit is contained in:
commit
fdbd95ed32
67
AoC/2024/perl/test.pl
Normal file
67
AoC/2024/perl/test.pl
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
use v5.40;
|
||||||
|
|
||||||
|
sub sum( @numbers ) {
|
||||||
|
my $sum_num = 0;
|
||||||
|
foreach my $num (@numbers) {
|
||||||
|
$sum_num = $sum_num + $num
|
||||||
|
}
|
||||||
|
return $sum_num
|
||||||
|
}
|
||||||
|
|
||||||
|
sub fold( $func, $initial, @list ) {
|
||||||
|
my $output = $initial;
|
||||||
|
foreach my $item (@list) {
|
||||||
|
$output = $func->($output, $item);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $output
|
||||||
|
}
|
||||||
|
|
||||||
|
sub mmap( $func, @list ) {
|
||||||
|
my @output;
|
||||||
|
foreach my $item (@list) {
|
||||||
|
my $result = $func->($item);
|
||||||
|
push(@output, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
return @output;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub map2( $func, @list1, @list2 ) {
|
||||||
|
my @output;
|
||||||
|
|
||||||
|
my $list1_length = $#list1;
|
||||||
|
my $list2_length = $#list2;
|
||||||
|
|
||||||
|
my $length = $list1_length;
|
||||||
|
if($list2_length < $length) {
|
||||||
|
$length = $list2_length;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(my $i = 0; $i < $length; $i++) {
|
||||||
|
push(@output, $func->(@list1[$i], @list2[$i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
return @output;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub sum_op( $a, $b ) {
|
||||||
|
return $a + $b
|
||||||
|
}
|
||||||
|
|
||||||
|
sub sum_op_2( $a ) {
|
||||||
|
return $a * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub diff_op( $a, $b ) {
|
||||||
|
return $a - $b;
|
||||||
|
}
|
||||||
|
|
||||||
|
my @test = (1,2,3,4,5,6,7,8,9,10);
|
||||||
|
|
||||||
|
print(fold(\&sum_op, 0, @test));
|
||||||
|
|
||||||
|
print(mmap(\&sum_op_2, @test));
|
||||||
|
|
||||||
|
print(map2(\&diff_op, @test, @test));
|
||||||
Loading…
Reference in New Issue
Block a user