aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Karelas <karjala@cpan.org>2025-06-02 13:43:32 +0300
committerAlexander Karelas <karjala@cpan.org>2025-06-02 13:43:32 +0300
commit7c395aaa95188baada7593cc16df66ea7986c534 (patch)
treea3deb730a2213f709bcae611b643e733c7cdd8b4
parentb0159e77cc4e56da3a5a1c86d5769c652bcc887e (diff)
downloadperlweeklychallenge-club-7c395aaa95188baada7593cc16df66ea7986c534.tar.gz
perlweeklychallenge-club-7c395aaa95188baada7593cc16df66ea7986c534.tar.bz2
perlweeklychallenge-club-7c395aaa95188baada7593cc16df66ea7986c534.zip
solutions for week 324
-rwxr-xr-xchallenge-324/alexander-karelas/perl/ch-1.pl16
-rwxr-xr-xchallenge-324/alexander-karelas/perl/ch-2.pl25
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();