aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAli <adeadmarshal@gmail.com>2025-06-02 18:33:15 +0330
committerAli <adeadmarshal@gmail.com>2025-06-02 18:33:15 +0330
commit8a0307468a4e57aa6b31bd189f5b2f47d4b3ea88 (patch)
treeff50f6209c08e01ab3b357418042734ec6f1f730
parentb0159e77cc4e56da3a5a1c86d5769c652bcc887e (diff)
downloadperlweeklychallenge-club-8a0307468a4e57aa6b31bd189f5b2f47d4b3ea88.tar.gz
perlweeklychallenge-club-8a0307468a4e57aa6b31bd189f5b2f47d4b3ea88.tar.bz2
perlweeklychallenge-club-8a0307468a4e57aa6b31bd189f5b2f47d4b3ea88.zip
TWC324
-rw-r--r--challenge-324/deadmarshal/blog.txt1
-rw-r--r--challenge-324/deadmarshal/erlang/ch1.erl20
-rw-r--r--challenge-324/deadmarshal/erlang/ch2.erl19
-rw-r--r--challenge-324/deadmarshal/java/Ch1.java20
-rw-r--r--challenge-324/deadmarshal/java/Ch2.java18
-rw-r--r--challenge-324/deadmarshal/perl/ch-1.pl14
-rw-r--r--challenge-324/deadmarshal/perl/ch-2.pl19
7 files changed, 111 insertions, 0 deletions
diff --git a/challenge-324/deadmarshal/blog.txt b/challenge-324/deadmarshal/blog.txt
new file mode 100644
index 0000000000..2c9695db26
--- /dev/null
+++ b/challenge-324/deadmarshal/blog.txt
@@ -0,0 +1 @@
+https://deadmarshal.blogspot.com/2025/06/twc324.html
diff --git a/challenge-324/deadmarshal/erlang/ch1.erl b/challenge-324/deadmarshal/erlang/ch1.erl
new file mode 100644
index 0000000000..7967d436d2
--- /dev/null
+++ b/challenge-324/deadmarshal/erlang/ch1.erl
@@ -0,0 +1,20 @@
+-module(ch1).
+-export([twod_array/3]).
+
+twod_array(L,R,C) when length(L) / C == R ->
+ chunk_every(L,C);
+twod_array(_,_,_) -> [].
+
+chunk_every(L,N) when N > 0 ->
+ chunk_every(L,N,[]).
+
+chunk_every([],_,Acc) ->
+ lists:reverse(Acc);
+chunk_every(L,N,Acc) ->
+ case L of
+ _ when length(L) >= N ->
+ {Chunk,Rest} = lists:split(N,L),
+ chunk_every(Rest,N,[Chunk|Acc]);
+ _ -> lists:reverse([L|Acc])
+ end.
+
diff --git a/challenge-324/deadmarshal/erlang/ch2.erl b/challenge-324/deadmarshal/erlang/ch2.erl
new file mode 100644
index 0000000000..553baf58bc
--- /dev/null
+++ b/challenge-324/deadmarshal/erlang/ch2.erl
@@ -0,0 +1,19 @@
+-module(ch2).
+-export([total_xor/1]).
+
+total_xor(L) ->
+ Ls = lists:map(fun(L) -> lists:foldl(fun erlang:'bxor'/2,0,L) end,
+ subsets(L)),
+ lists:foldl(fun erlang:'+'/2,0,Ls).
+
+subsets(L) ->
+ N = length(L),
+ Max = trunc(math:pow(2,N)),
+ subsets(L,0,N,Max,[]).
+
+subsets(L,I,N,Max,Acc) when I < Max ->
+ Subset = [lists:nth(Pos+1,L) || Pos <- lists:seq(0,N-1),
+ I band (1 bsl Pos) =/= 0],
+ subsets(L,I+1,N,Max,[Subset|Acc]);
+subsets(_,_,_,_,Acc) -> Acc.
+
diff --git a/challenge-324/deadmarshal/java/Ch1.java b/challenge-324/deadmarshal/java/Ch1.java
new file mode 100644
index 0000000000..80e1014aa1
--- /dev/null
+++ b/challenge-324/deadmarshal/java/Ch1.java
@@ -0,0 +1,20 @@
+import java.util.Arrays;
+
+public class Ch1 {
+ public static void main(String[] args) {
+ System.out.println(Arrays.deepToString(twod_array(new int[]{1, 2, 3, 4}, 2, 2)));
+ System.out.println(Arrays.deepToString(twod_array(new int[]{1, 2, 3}, 1, 3)));
+ System.out.println(Arrays.deepToString(twod_array(new int[]{1, 2, 3, 4}, 4, 1)));
+ }
+
+ private static int[][] twod_array(int[] arr, int r, int c) {
+ if (r * c != arr.length) return new int[0][0];
+ int[][] res = new int[r][c];
+ for (int i = 0; i < r; ++i) {
+ for (int j = 0; j < c; ++j) {
+ res[i][j] = arr[i * c + j];
+ }
+ }
+ return res;
+ }
+}
diff --git a/challenge-324/deadmarshal/java/Ch2.java b/challenge-324/deadmarshal/java/Ch2.java
new file mode 100644
index 0000000000..5236df8664
--- /dev/null
+++ b/challenge-324/deadmarshal/java/Ch2.java
@@ -0,0 +1,18 @@
+public class Ch2 {
+ public static void main(String[] args) {
+ System.out.println(total_xor(new int[]{1, 3}));
+ System.out.println(total_xor(new int[]{5, 1, 6}));
+ System.out.println(total_xor(new int[]{3, 4, 5, 6, 7, 8}));
+ }
+
+ private static int total_xor(int[] arr) {
+ int n = arr.length, res = 0;
+ for (int i = 0; i < 1 << n; ++i) {
+ int s = 0;
+ for (int j = 0; j < n; ++j) if ((i >> j & 1) == 1) s ^= arr[j];
+ res += s;
+ }
+ return res;
+ }
+}
+
diff --git a/challenge-324/deadmarshal/perl/ch-1.pl b/challenge-324/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..7b83973169
--- /dev/null
+++ b/challenge-324/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,14 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Data::Show;
+
+sub twod_array{
+ my ($arr,$r,$c) = @_;
+ map{[splice @$arr,0,$c]} 1..$r
+}
+
+print show twod_array([1,2,3,4],2,2);
+print show twod_array([1,2,3],1,3);
+print show twod_array([1,2,3,4],4,1);
+
diff --git a/challenge-324/deadmarshal/perl/ch-2.pl b/challenge-324/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..d42aec0a88
--- /dev/null
+++ b/challenge-324/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,19 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Algorithm::Combinatorics qw(subsets);
+use List::Util qw(reduce);
+
+sub total_xor{
+ my $it = subsets($_[0]);
+ my $sum = 0;
+ while(my $s = $it->next){
+ $sum += reduce {$a ^ $b} 0, @$s
+ }
+ $sum
+}
+
+printf "%d\n",total_xor([1,3]);
+printf "%d\n",total_xor([5,1,6]);
+printf "%d\n",total_xor([3,4,5,6,7,8]);
+