diff options
| author | Ali <adeadmarshal@gmail.com> | 2025-08-19 10:07:57 +0330 |
|---|---|---|
| committer | Ali <adeadmarshal@gmail.com> | 2025-08-19 10:07:57 +0330 |
| commit | e8aeeee6722902fd02c0c6ba244738acac8fa983 (patch) | |
| tree | aeb7c33905b7d875f028196ec4c14777d9b83ec1 | |
| parent | 4f766edf1327ad3628c824c3c00f1c1f10c50b38 (diff) | |
| download | perlweeklychallenge-club-e8aeeee6722902fd02c0c6ba244738acac8fa983.tar.gz perlweeklychallenge-club-e8aeeee6722902fd02c0c6ba244738acac8fa983.tar.bz2 perlweeklychallenge-club-e8aeeee6722902fd02c0c6ba244738acac8fa983.zip | |
TWC335
| -rw-r--r-- | challenge-335/deadmarshal/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-335/deadmarshal/java/Ch1.java | 28 | ||||
| -rw-r--r-- | challenge-335/deadmarshal/java/Ch2.java | 28 | ||||
| -rw-r--r-- | challenge-335/deadmarshal/perl/ch-1.pl | 20 | ||||
| -rw-r--r-- | challenge-335/deadmarshal/perl/ch-2.pl | 29 | ||||
| -rw-r--r-- | challenge-335/deadmarshal/python/ch1.py | 27 | ||||
| -rw-r--r-- | challenge-335/deadmarshal/python/ch2.py | 25 |
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]])) + |
