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