aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-05-13 13:20:55 +0100
committerGitHub <noreply@github.com>2025-05-13 13:20:55 +0100
commit8ac9237f3ee78a2c281f85e001987694a8f535e7 (patch)
tree309513781cbe22982942efebbbf96df219e414ec
parent9f9212572f40fc04654ca829356baedbf9acecb1 (diff)
parent83efa41a4137d09f36c8b4f2fbc117aec205f448 (diff)
downloadperlweeklychallenge-club-8ac9237f3ee78a2c281f85e001987694a8f535e7.tar.gz
perlweeklychallenge-club-8ac9237f3ee78a2c281f85e001987694a8f535e7.tar.bz2
perlweeklychallenge-club-8ac9237f3ee78a2c281f85e001987694a8f535e7.zip
Merge pull request #12017 from deadmarshal/TWC321
TWC321
-rw-r--r--challenge-321/deadmarshal/blog.txt1
-rw-r--r--challenge-321/deadmarshal/erlang/ch1.erl13
-rw-r--r--challenge-321/deadmarshal/erlang/ch2.erl16
-rw-r--r--challenge-321/deadmarshal/java/Ch1.java20
-rw-r--r--challenge-321/deadmarshal/java/Ch2.java41
-rw-r--r--challenge-321/deadmarshal/modula-3/Ch1/src/Ch1.m325
-rw-r--r--challenge-321/deadmarshal/modula-3/Ch1/src/m3makefile5
-rw-r--r--challenge-321/deadmarshal/modula-3/Ch2/src/Ch2.m349
-rw-r--r--challenge-321/deadmarshal/modula-3/Ch2/src/m3makefile4
-rw-r--r--challenge-321/deadmarshal/perl/ch-1.pl15
-rw-r--r--challenge-321/deadmarshal/perl/ch-2.pl16
11 files changed, 205 insertions, 0 deletions
diff --git a/challenge-321/deadmarshal/blog.txt b/challenge-321/deadmarshal/blog.txt
new file mode 100644
index 0000000000..08bc2ea63b
--- /dev/null
+++ b/challenge-321/deadmarshal/blog.txt
@@ -0,0 +1 @@
+https://deadmarshal.blogspot.com/2025/05/twc321.html
diff --git a/challenge-321/deadmarshal/erlang/ch1.erl b/challenge-321/deadmarshal/erlang/ch1.erl
new file mode 100644
index 0000000000..e283ab5d1e
--- /dev/null
+++ b/challenge-321/deadmarshal/erlang/ch1.erl
@@ -0,0 +1,13 @@
+-module(ch1).
+-author("Ali Moradi").
+-export([distinct_average/1]).
+
+distinct_average(L) ->
+ L2 = lists:sort(L),
+ L3 = pair_min_max(L2),
+ L4 = lists:map(fun({A, B}) -> A + B end, L3),
+ sets:size(sets:from_list(L4)).
+
+pair_min_max(L) ->
+ {Left, Right} = lists:split(length(L) div 2, L),
+ lists:zip(Left, lists:reverse(Right)).
diff --git a/challenge-321/deadmarshal/erlang/ch2.erl b/challenge-321/deadmarshal/erlang/ch2.erl
new file mode 100644
index 0000000000..9dba2298db
--- /dev/null
+++ b/challenge-321/deadmarshal/erlang/ch2.erl
@@ -0,0 +1,16 @@
+-module(ch2).
+-author("Ali Moradi").
+-export([backspace_compare/2]).
+
+backspace_compare(S1, S2) ->
+ process_string(S1) =:= process_string(S2).
+
+process_string(S) ->
+ process_string(S, []).
+
+process_string([], Acc) -> lists:reverse(Acc);
+process_string([$# | T], [_ | AccT]) -> % remove one character from Acc
+ process_string(T, AccT);
+process_string([C | T], Acc) -> % normal character
+ process_string(T, [C | Acc]).
+
diff --git a/challenge-321/deadmarshal/java/Ch1.java b/challenge-321/deadmarshal/java/Ch1.java
new file mode 100644
index 0000000000..bf51dc88cb
--- /dev/null
+++ b/challenge-321/deadmarshal/java/Ch1.java
@@ -0,0 +1,20 @@
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+public class Ch1 {
+ public static void main(String[] args) {
+ System.out.println(distinct_average(new int[]{1, 2, 4, 3, 5, 6}));
+ System.out.println(distinct_average(new int[]{0, 2, 4, 8, 3, 5}));
+ System.out.println(distinct_average(new int[]{7, 3, 1, 0, 5, 9}));
+ }
+
+ private static int distinct_average(int[] arr) {
+ Arrays.sort(arr);
+ Set<Integer> s = new HashSet<>();
+ for (int i = 0; i < arr.length / 2; ++i)
+ s.add(arr[i] + arr[arr.length - i - 1]);
+ return s.size();
+ }
+}
+
diff --git a/challenge-321/deadmarshal/java/Ch2.java b/challenge-321/deadmarshal/java/Ch2.java
new file mode 100644
index 0000000000..8d92e9bc6e
--- /dev/null
+++ b/challenge-321/deadmarshal/java/Ch2.java
@@ -0,0 +1,41 @@
+public class Ch2 {
+ public static void main(String[] args) {
+ System.out.println(backspace_compare("ab#c", "ad#c"));
+ System.out.println(backspace_compare("ab##", "a#b#"));
+ System.out.println(backspace_compare("a#b", "c"));
+ }
+
+ private static boolean backspace_compare(String s1, String s2) {
+ int i = s1.length() - 1, j = s2.length() - 1;
+ int skip1 = 0, skip2 = 0;
+ for (; i >= 0 || j >= 0; --i, --j) {
+ while (i >= 0) {
+ if (s1.charAt(i) == '#') {
+ ++skip1;
+ --i;
+ } else if (skip1 > 0) {
+ --skip1;
+ --i;
+ } else {
+ break;
+ }
+ }
+ while (j >= 0) {
+ if (s2.charAt(j) == '#') {
+ ++skip2;
+ --j;
+ } else if (skip2 > 0) {
+ --skip2;
+ --j;
+ } else {
+ break;
+ }
+ }
+ if (i >= 0 && j >= 0) {
+ if (s1.charAt(i) != s2.charAt(j)) return false;
+ } else if (i >= 0 || j >= 0) return false;
+ }
+ return true;
+ }
+}
+
diff --git a/challenge-321/deadmarshal/modula-3/Ch1/src/Ch1.m3 b/challenge-321/deadmarshal/modula-3/Ch1/src/Ch1.m3
new file mode 100644
index 0000000000..77c3e8efbf
--- /dev/null
+++ b/challenge-321/deadmarshal/modula-3/Ch1/src/Ch1.m3
@@ -0,0 +1,25 @@
+MODULE Ch1 EXPORTS Main;
+
+IMPORT SIO,IntSetDef,IntArraySort;
+
+VAR
+ A1 := ARRAY[0..5] OF INTEGER{1,2,4,3,5,6};
+ A2 := ARRAY[0..5] OF INTEGER{0,2,4,8,3,5};
+ A3 := ARRAY[0..5] OF INTEGER{7,3,1,0,5,9};
+
+PROCEDURE DistinctAverage(VAR A:ARRAY OF INTEGER):INTEGER =
+ VAR S := NEW(IntSetDef.T).init();
+ BEGIN
+ IntArraySort.Sort(A);
+ FOR I := FIRST(A) TO NUMBER(A) DIV 2 DO
+ EVAL S.insert(A[I] + A[LAST(A)-I])
+ END;
+ RETURN S.size()
+ END DistinctAverage;
+
+BEGIN
+ SIO.PutInt(DistinctAverage(A1)); SIO.Nl();
+ SIO.PutInt(DistinctAverage(A2)); SIO.Nl();
+ SIO.PutInt(DistinctAverage(A3)); SIO.Nl()
+END Ch1.
+
diff --git a/challenge-321/deadmarshal/modula-3/Ch1/src/m3makefile b/challenge-321/deadmarshal/modula-3/Ch1/src/m3makefile
new file mode 100644
index 0000000000..66a81a47c4
--- /dev/null
+++ b/challenge-321/deadmarshal/modula-3/Ch1/src/m3makefile
@@ -0,0 +1,5 @@
+import("libm3")
+import("libsio")
+import("set")
+implementation("Ch1")
+program("Ch1")
diff --git a/challenge-321/deadmarshal/modula-3/Ch2/src/Ch2.m3 b/challenge-321/deadmarshal/modula-3/Ch2/src/Ch2.m3
new file mode 100644
index 0000000000..958e968a7d
--- /dev/null
+++ b/challenge-321/deadmarshal/modula-3/Ch2/src/Ch2.m3
@@ -0,0 +1,49 @@
+MODULE Ch2 EXPORTS Main;
+
+IMPORT SIO,Text;
+
+PROCEDURE BackspaceCompare(READONLY S1,S2:TEXT):BOOLEAN =
+ VAR
+ I := Text.Length(S1)-1;
+ J := Text.Length(S2)-1;
+ Skip1,Skip2:CARDINAL;
+ BEGIN
+ WHILE I >= 0 OR J >= 0 DO
+ WHILE I >= 0 DO
+ IF Text.GetChar(S1,I) = '#' THEN
+ INC(Skip1);
+ DEC(I)
+ ELSIF Skip1 > 0 THEN
+ DEC(Skip1);
+ DEC(I)
+ ELSE EXIT
+ END
+ END;
+ WHILE J >= 0 DO
+ IF Text.GetChar(S2,J) = '#' THEN
+ INC(Skip2);
+ DEC(J);
+ ELSIF Skip2 > 0 THEN
+ DEC(Skip2);
+ DEC(J)
+ ELSE EXIT
+ END
+ END;
+ IF I >= 0 AND J >= 0 THEN
+ IF Text.GetChar(S1,I) # Text.GetChar(S2,J) THEN
+ RETURN FALSE
+ END;
+ ELSIF I >= 0 OR J >= 0 THEN RETURN FALSE
+ END;
+ DEC(I);
+ DEC(J);
+ END;
+ RETURN TRUE
+ END BackspaceCompare;
+
+BEGIN
+ SIO.PutBool(BackspaceCompare("ab#c","ad#c")); SIO.Nl();
+ SIO.PutBool(BackspaceCompare("ab##","a#b#")); SIO.Nl();
+ SIO.PutBool(BackspaceCompare("a#b","c")); SIO.Nl()
+END Ch2.
+
diff --git a/challenge-321/deadmarshal/modula-3/Ch2/src/m3makefile b/challenge-321/deadmarshal/modula-3/Ch2/src/m3makefile
new file mode 100644
index 0000000000..78802242fe
--- /dev/null
+++ b/challenge-321/deadmarshal/modula-3/Ch2/src/m3makefile
@@ -0,0 +1,4 @@
+import("libm3")
+import("libsio")
+implementation("Ch2")
+program("Ch2")
diff --git a/challenge-321/deadmarshal/perl/ch-1.pl b/challenge-321/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..b4e9fe6016
--- /dev/null
+++ b/challenge-321/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,15 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+sub distinct_average{
+ my @arr = sort{$a <=> $b} @{$_[0]};
+ my %h;
+ undef $h{($arr[$_] + $arr[$#arr-$_]) / 2} foreach 0..@arr/2;
+ scalar keys %h
+}
+
+printf "%d\n",distinct_average([1,2,4,3,5,6]);
+printf "%d\n",distinct_average([0,2,4,8,3,5]);
+printf "%d\n",distinct_average([7,3,1,0,5,9]);
+
diff --git a/challenge-321/deadmarshal/perl/ch-2.pl b/challenge-321/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..17260287f1
--- /dev/null
+++ b/challenge-321/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,16 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+sub backspace_compare{
+ my ($s1,$s2) = @_;
+ for($s1,$s2){
+ 1 while s/[^#]#//
+ }
+ $s1 eq $s2
+}
+
+printf "%d\n",backspace_compare('ab#c','ad#c');
+printf "%d\n",backspace_compare('ab##','a#b#');
+printf "%d\n",backspace_compare('a#b','c');
+