From fdbd95ed32f830bee40ed5570cb40db8e27d2393 Mon Sep 17 00:00:00 2001 From: Folkert Kevelam Date: Sun, 9 Feb 2025 15:30:20 +0100 Subject: [PATCH] Initial commit --- AoC/2024/perl/test.pl | 67 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 AoC/2024/perl/test.pl diff --git a/AoC/2024/perl/test.pl b/AoC/2024/perl/test.pl new file mode 100644 index 0000000..695c95f --- /dev/null +++ b/AoC/2024/perl/test.pl @@ -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));