aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAli <adeadmarshal@gmail.com>2025-08-19 10:07:57 +0330
committerAli <adeadmarshal@gmail.com>2025-08-19 10:07:57 +0330
commite8aeeee6722902fd02c0c6ba244738acac8fa983 (patch)
treeaeb7c33905b7d875f028196ec4c14777d9b83ec1
parent4f766edf1327ad3628c824c3c00f1c1f10c50b38 (diff)
downloadperlweeklychallenge-club-e8aeeee6722902fd02c0c6ba244738acac8fa983.tar.gz
perlweeklychallenge-club-e8aeeee6722902fd02c0c6ba244738acac8fa983.tar.bz2
perlweeklychallenge-club-e8aeeee6722902fd02c0c6ba244738acac8fa983.zip
TWC335
-rw-r--r--challenge-335/deadmarshal/blog.txt1
-rw-r--r--challenge-335/deadmarshal/java/Ch1.java28
-rw-r--r--challenge-335/deadmarshal/java/Ch2.java28
-rw-r--r--challenge-335/deadmarshal/perl/ch-1.pl20
-rw-r--r--challenge-335/deadmarshal/perl/ch-2.pl29
-rw-r--r--challenge-335/deadmarshal/python/ch1.py27
-rw-r--r--challenge-335/deadmarshal/python/ch2.py25
7 files changed, 158 insertions, 0 deletions
diff --git a/challenge-335/deadmarshal/blog.txt b/challenge-335/deadmarshal/blog.txt
new file mode 100644
index 0000000000..93d51c3c91
--- /dev/null
+++ b/challenge-335/deadmarshal/blog.txt
@@ -0,0 +1 @@
+https://deadmarshal.blogspot.com/2025/08/twc335.html
diff --git a/challenge-335/deadmarshal/java/Ch1.java b/challenge-335/deadmarshal/java/Ch1.java
new file mode 100644
index 0000000000..d72f9863e7
--- /dev/null
+++ b/challenge-335/deadmarshal/java/Ch1.java
@@ -0,0 +1,28 @@
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class Ch1 {
+ public static void main(String[] args) {
+ System.out.println(common_characters(new String[]{"bella", "label", "roller"}));
+ System.out.println(common_characters(new String[]{"cool", "lock", "cook"}));
+ System.out.println(common_characters(new String[]{"hello", "world", "pole"}));
+ System.out.println(common_characters(new String[]{"abc", "def", "ghi"}));
+ System.out.println(common_characters(new String[]{"aab", "aac", "aaa"}));
+ }
+
+ private static List<String> common_characters(String[] words) {
+ int[] cnt = new int[26];
+ Arrays.fill(cnt, Integer.MAX_VALUE);
+ for (String w : words) {
+ int[] ccnt = new int[26];
+ for (int i = 0; i < w.length(); ++i) ++ccnt[w.charAt(i) - 'a'];
+ for (int i = 0; i < 26; ++i) cnt[i] = Math.min(cnt[i], ccnt[i]);
+ }
+ List<String> res = new ArrayList<>();
+ for (int i = 0; i < 26; ++i)
+ while (cnt[i]-- > 0) res.add(String.valueOf((char) (i + 'a')));
+ return res;
+ }
+}
+
diff --git a/challenge-335/deadmarshal/java/Ch2.java b/challenge-335/deadmarshal/java/Ch2.java
new file mode 100644
index 0000000000..ef3c59fa07
--- /dev/null
+++ b/challenge-335/deadmarshal/java/Ch2.java
@@ -0,0 +1,28 @@
+public class Ch2 {
+ public static void main(String[] args) {
+ System.out.println(find_winner(new int[][]{{0, 0}, {2, 0},
+ {1, 1}, {2, 1}, {2, 2}}));
+ System.out.println(find_winner(new int[][]{{0, 0}, {1, 1}, {0, 1}, {0, 2}
+ , {1, 0}, {2, 0}}));
+ System.out.println(find_winner(new int[][]{{0, 0}, {1, 1}, {2, 0}, {1, 0},
+ {1, 2}, {2, 1}, {0, 1}, {0, 2}, {2, 2}}));
+ System.out.println(find_winner(new int[][]{{0, 0}, {1, 1}}));
+ System.out.println(find_winner(new int[][]{{1, 1}, {0, 0}, {2, 2}, {0, 1},
+ {1, 0}, {0, 2}}));
+ }
+
+ private static String find_winner(int[][] moves) {
+ int[] cnt = new int[8];
+ for (int k = moves.length - 1; k >= 0; k -= 2) {
+ int i = moves[k][0], j = moves[k][1];
+ cnt[i]++;
+ cnt[j + 3]++;
+ if (i == j) cnt[6]++;
+ if (i + j == 2) cnt[7]++;
+ if (cnt[i] == 3 || cnt[j + 3] == 3 || cnt[6] == 3 || cnt[7] == 3)
+ return k % 2 == 0 ? "A" : "B";
+ }
+ return moves.length == 9 ? "Draw" : "Pending";
+ }
+}
+
diff --git a/challenge-335/deadmarshal/perl/ch-1.pl b/challenge-335/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..7b9f93e92c
--- /dev/null
+++ b/challenge-335/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,20 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Data::Show;
+use List::Util qw(min);
+use List::MoreUtils qw(frequency);
+
+sub common_characters{
+ my @f = map{{frequency split ''}} @{$_[0]};
+ map{my $l = $_;
+ ($l) x min map{$_->{$l} // 0} @f
+ } 'a'..'z'
+}
+
+print show common_characters(["bella","label","roller"]);
+print show common_characters(["cool","lock","cook"]);
+print show common_characters(["hello","world","pole"]);
+print show common_characters(["abc","def","ghi"]);
+print show common_characters(["aab","aac","aaa"]);
+
diff --git a/challenge-335/deadmarshal/perl/ch-2.pl b/challenge-335/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..b35dba23e9
--- /dev/null
+++ b/challenge-335/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,29 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Data::Show;
+use List::Util qw(any);
+
+sub find_winner{
+ my ($m) = @_;
+ my @cnt = (0) x 8;
+ for(my $k = $#$m; $k >= 0; $k -= 2){
+ my ($i,$j) = ($m->[$k][0],$m->[$k][1]);
+ $cnt[$i]++;
+ $cnt[$j+3]++;
+ $cnt[6]++ if $i == $j;
+ $cnt[7]++ if $i + $j == 2;
+ if(any{$_ == 3} ($cnt[$i],$cnt[$j+3],$cnt[6],$cnt[7])) {
+ return $k % 2 == 0 ? 'A' : 'B'
+ }
+ }
+ @$m == 9 ? 'Draw' : 'Pending'
+}
+
+printf "%s\n",find_winner([[0,0],[2,0],[1,1],[2,1],[2,2]]);
+printf "%s\n",find_winner([[0,0],[1,1],[0,1],[0,2],[1,0],[2,0]]);
+printf "%s\n",find_winner([[0,0],[1,1],[2,0],[1,0],[1,2],[2,1],
+ [0,1],[0,2],[2,2]]);
+printf "%s\n",find_winner([[0,0],[1,1]]);
+printf "%s\n",find_winner([[1,1],[0,0],[2,2],[0,1],[1,0],[0,2]]);
+
diff --git a/challenge-335/deadmarshal/python/ch1.py b/challenge-335/deadmarshal/python/ch1.py
new file mode 100644
index 0000000000..c6eff24177
--- /dev/null
+++ b/challenge-335/deadmarshal/python/ch1.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+
+from collections import Counter
+
+def common_characters(words):
+ char_count = Counter(words[0])
+
+ for w in words:
+ current_count = Counter(w)
+
+ for c in list(char_count):
+ char_count[c] = min(char_count[c],current_count[c])
+
+ res = []
+
+ for char,count in char_count.items():
+ res.extend([char] * count)
+
+ return res
+
+
+print(common_characters(["bella","label","roller"]))
+print(common_characters(["cool","lock","cook"]))
+print(common_characters(["hello","world","pole"]))
+print(common_characters(["abc","def","ghi"]))
+print(common_characters(["aab","aac","aaa"]))
+
diff --git a/challenge-335/deadmarshal/python/ch2.py b/challenge-335/deadmarshal/python/ch2.py
new file mode 100644
index 0000000000..908dc0d7b7
--- /dev/null
+++ b/challenge-335/deadmarshal/python/ch2.py
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+
+def find_winner(moves):
+ n = len(moves)
+ cnt = [0] * 8
+ for k in range(n-1,-1,-2):
+ i,j = moves[k]
+ cnt[i] += 1
+ cnt[j+3] += 1
+ if i == j:
+ cnt[6] += 1
+ if i+j == 2:
+ cnt[7] += 1
+ if any(v == 3 for v in cnt):
+ return "B" if k & 1 else "A"
+ return "Draw" if n == 9 else "Pending"
+
+
+print(find_winner([[0,0],[2,0],[1,1],[2,1],[2,2]]))
+print(find_winner([[0,0],[1,1],[0,1],[0,2],[1,0],[2,0]]))
+print(find_winner([[0,0],[1,1],[2,0],[1,0],[1,2],[2,1],
+ [0,1],[0,2],[2,2]]))
+print(find_winner([[0,0],[1,1]]))
+print(find_winner([[1,1],[0,0],[2,2],[0,1],[1,0],[0,2]]))
+