diff options
| author | Alexander Karelas <karjala@cpan.org> | 2025-06-02 13:43:32 +0300 |
|---|---|---|
| committer | Alexander Karelas <karjala@cpan.org> | 2025-06-02 13:43:32 +0300 |
| commit | 7c395aaa95188baada7593cc16df66ea7986c534 (patch) | |
| tree | a3deb730a2213f709bcae611b643e733c7cdd8b4 | |
| parent | b0159e77cc4e56da3a5a1c86d5769c652bcc887e (diff) | |
| download | perlweeklychallenge-club-7c395aaa95188baada7593cc16df66ea7986c534.tar.gz perlweeklychallenge-club-7c395aaa95188baada7593cc16df66ea7986c534.tar.bz2 perlweeklychallenge-club-7c395aaa95188baada7593cc16df66ea7986c534.zip | |
solutions for week 324
| -rwxr-xr-x | challenge-324/alexander-karelas/perl/ch-1.pl | 16 | ||||
| -rwxr-xr-x | challenge-324/alexander-karelas/perl/ch-2.pl | 25 |
2 files changed, 41 insertions, 0 deletions
diff --git a/challenge-324/alexander-karelas/perl/ch-1.pl b/challenge-324/alexander-karelas/perl/ch-1.pl new file mode 100755 index 0000000000..8f996e313a --- /dev/null +++ b/challenge-324/alexander-karelas/perl/ch-1.pl @@ -0,0 +1,16 @@ +#!/usr/bin/env perl + +use v5.40; + +use Test2::V0; + +sub form_2_dim ($ints, $r, $c) { + my @matrix = map { [splice @$ints, 0, $c] } 1 .. $r; + return '(' . join(', ', map {'[' . join(', ', @$_) . ']'} @matrix) . ')'; +} + +is form_2_dim([1, 2, 3, 4], 2, 2), '([1, 2], [3, 4])', 'Example 1'; +is form_2_dim([1, 2, 3], 1, 3), '([1, 2, 3])', 'Example 2'; +is form_2_dim([1, 2, 3, 4], 4, 1), '([1], [2], [3], [4])', 'Example 3'; + +done_testing(); diff --git a/challenge-324/alexander-karelas/perl/ch-2.pl b/challenge-324/alexander-karelas/perl/ch-2.pl new file mode 100755 index 0000000000..7440e99035 --- /dev/null +++ b/challenge-324/alexander-karelas/perl/ch-2.pl @@ -0,0 +1,25 @@ +#!/usr/bin/env perl + +use v5.40; + +use Test2::V0; + +sub total_xor ($ints) { + my $max = 1; + $max *= 2 foreach @$ints; + my $total = 0; + for my $i (1 .. $max-1) { + my @bin = split //, sprintf('%0'. scalar(@$ints) .'b', $i); + my $xor = 0; + for (my $j = 0; $j < @bin; $j++) { + $xor = ($xor ^ $ints->[$j]) if $bin[$j]; + } + $total += $xor; + } + return $total; +} + +is total_xor([1, 3]), 6, 'Example 1'; +is total_xor([5, 1, 6]), 28, 'Example 2'; + +done_testing(); |
