diff options
| author | Ali <adeadmarshal@gmail.com> | 2025-06-02 18:33:15 +0330 |
|---|---|---|
| committer | Ali <adeadmarshal@gmail.com> | 2025-06-02 18:33:15 +0330 |
| commit | 8a0307468a4e57aa6b31bd189f5b2f47d4b3ea88 (patch) | |
| tree | ff50f6209c08e01ab3b357418042734ec6f1f730 | |
| parent | b0159e77cc4e56da3a5a1c86d5769c652bcc887e (diff) | |
| download | perlweeklychallenge-club-8a0307468a4e57aa6b31bd189f5b2f47d4b3ea88.tar.gz perlweeklychallenge-club-8a0307468a4e57aa6b31bd189f5b2f47d4b3ea88.tar.bz2 perlweeklychallenge-club-8a0307468a4e57aa6b31bd189f5b2f47d4b3ea88.zip | |
TWC324
| -rw-r--r-- | challenge-324/deadmarshal/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-324/deadmarshal/erlang/ch1.erl | 20 | ||||
| -rw-r--r-- | challenge-324/deadmarshal/erlang/ch2.erl | 19 | ||||
| -rw-r--r-- | challenge-324/deadmarshal/java/Ch1.java | 20 | ||||
| -rw-r--r-- | challenge-324/deadmarshal/java/Ch2.java | 18 | ||||
| -rw-r--r-- | challenge-324/deadmarshal/perl/ch-1.pl | 14 | ||||
| -rw-r--r-- | challenge-324/deadmarshal/perl/ch-2.pl | 19 |
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]); + |
