aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-280/deadmarshal/blog.txt1
-rw-r--r--challenge-280/deadmarshal/java/Ch1.java17
-rw-r--r--challenge-280/deadmarshal/java/Ch2.java19
-rw-r--r--challenge-280/deadmarshal/modula-3/ch1/src/Ch1.m323
-rw-r--r--challenge-280/deadmarshal/modula-3/ch1/src/m3makefile5
-rw-r--r--challenge-280/deadmarshal/modula-3/ch2/src/Ch2.m327
-rw-r--r--challenge-280/deadmarshal/modula-3/ch2/src/m3makefile5
-rw-r--r--challenge-280/deadmarshal/perl/ch-1.pl12
-rw-r--r--challenge-280/deadmarshal/perl/ch-2.pl13
-rw-r--r--challenge-280/deadmarshal/raku/ch-1.raku11
-rw-r--r--challenge-280/deadmarshal/raku/ch-2.raku12
11 files changed, 145 insertions, 0 deletions
diff --git a/challenge-280/deadmarshal/blog.txt b/challenge-280/deadmarshal/blog.txt
new file mode 100644
index 0000000000..71803eccc9
--- /dev/null
+++ b/challenge-280/deadmarshal/blog.txt
@@ -0,0 +1 @@
+https://deadmarshal.blogspot.com/2024/08/twc280.html
diff --git a/challenge-280/deadmarshal/java/Ch1.java b/challenge-280/deadmarshal/java/Ch1.java
new file mode 100644
index 0000000000..678ee12336
--- /dev/null
+++ b/challenge-280/deadmarshal/java/Ch1.java
@@ -0,0 +1,17 @@
+public class Ch1 {
+ public static void main(String[] args) {
+ System.out.println(twice_appearance("acbddbca"));
+ System.out.println(twice_appearance("abccd"));
+ System.out.println(twice_appearance("abcdabbb"));
+ }
+
+ private static char twice_appearance(String str) {
+ int[] counts = new int[26];
+ for (int i = 0; i < str.length(); ++i) {
+ int idx = str.charAt(i) - 'a';
+ if (counts[idx] != 0) return str.charAt(i);
+ counts[idx]++;
+ }
+ return '\0';
+ }
+}
diff --git a/challenge-280/deadmarshal/java/Ch2.java b/challenge-280/deadmarshal/java/Ch2.java
new file mode 100644
index 0000000000..c9512617b0
--- /dev/null
+++ b/challenge-280/deadmarshal/java/Ch2.java
@@ -0,0 +1,19 @@
+public class Ch2 {
+ public static void main(String[] args) {
+ System.out.println(count_asterisks("p|*e*rl|w**e|*ekly|"));
+ System.out.println(count_asterisks("perl"));
+ System.out.println(count_asterisks("th|ewe|e**|k|l***ych|alleng|e"));
+ }
+
+ private static int count_asterisks(String str) {
+ String[] arr = str.split("\\|");
+ int count = 0;
+ for (int i = 0; i < arr.length; ++i) {
+ if (i % 2 == 0) {
+ for (int j = 0; j < arr[i].length(); ++j)
+ if (arr[i].charAt(j) == '*') count++;
+ }
+ }
+ return count;
+ }
+}
diff --git a/challenge-280/deadmarshal/modula-3/ch1/src/Ch1.m3 b/challenge-280/deadmarshal/modula-3/ch1/src/Ch1.m3
new file mode 100644
index 0000000000..d770df7d4d
--- /dev/null
+++ b/challenge-280/deadmarshal/modula-3/ch1/src/Ch1.m3
@@ -0,0 +1,23 @@
+MODULE Ch1 EXPORTS Main;
+
+IMPORT SIO,Text;
+
+PROCEDURE TwiceAppearance(READONLY Str:TEXT):CHAR =
+ VAR
+ Counts:ARRAY[0..26] OF INTEGER := ARRAY[0..26] OF INTEGER{0,..};
+ Idx:INTEGER := 0;
+ BEGIN
+ FOR I := 0 TO Text.Length(Str)-1 DO
+ Idx := ORD(Text.GetChar(Str,I)) - ORD('a');
+ IF Counts[Idx] # 0 THEN RETURN Text.GetChar(Str,I) END;
+ INC(Counts[Idx])
+ END;
+ RETURN '\000'
+ END TwiceAppearance;
+
+BEGIN
+ SIO.PutChar(TwiceAppearance("acbddbca")); SIO.Nl();
+ SIO.PutChar(TwiceAppearance("abccd")); SIO.Nl();
+ SIO.PutChar(TwiceAppearance("abcdabbb")); SIO.Nl()
+END Ch1.
+
diff --git a/challenge-280/deadmarshal/modula-3/ch1/src/m3makefile b/challenge-280/deadmarshal/modula-3/ch1/src/m3makefile
new file mode 100644
index 0000000000..9f66e4a51f
--- /dev/null
+++ b/challenge-280/deadmarshal/modula-3/ch1/src/m3makefile
@@ -0,0 +1,5 @@
+import("libm3")
+import("libsio")
+implementation("Ch1")
+program("ch1")
+
diff --git a/challenge-280/deadmarshal/modula-3/ch2/src/Ch2.m3 b/challenge-280/deadmarshal/modula-3/ch2/src/Ch2.m3
new file mode 100644
index 0000000000..e1f6ff5ab1
--- /dev/null
+++ b/challenge-280/deadmarshal/modula-3/ch2/src/Ch2.m3
@@ -0,0 +1,27 @@
+MODULE Ch2 EXPORTS Main;
+
+IMPORT SIO,Text,TextConv;
+
+PROCEDURE CountAsterisks(READONLY t:TEXT):CARDINAL =
+ VAR
+ Len:CARDINAL := TextConv.ExplodedSize(t,SET OF CHAR{'|'});
+ A:REF ARRAY OF TEXT := NEW(REF ARRAY OF TEXT,Len);
+ Count:CARDINAL := 0;
+ BEGIN
+ TextConv.Explode(t,A^,SET OF CHAR{'|'});
+ FOR I := FIRST(A^) TO LAST(A^) DO
+ IF I MOD 2 = 0 THEN
+ FOR J := 0 TO Text.Length(A[I])-1 DO
+ IF Text.GetChar(A[I],J) = '*' THEN INC(Count) END
+ END
+ END
+ END;
+ RETURN Count
+ END CountAsterisks;
+
+BEGIN
+ SIO.PutInt(CountAsterisks("p|*e*rl|w**e|*ekly|")); SIO.Nl();
+ SIO.PutInt(CountAsterisks("perl")); SIO.Nl();
+ SIO.PutInt(CountAsterisks("th|ewe|e**|k|l***ych|alleng|e")); SIO.Nl();
+END Ch2.
+
diff --git a/challenge-280/deadmarshal/modula-3/ch2/src/m3makefile b/challenge-280/deadmarshal/modula-3/ch2/src/m3makefile
new file mode 100644
index 0000000000..798c627ef3
--- /dev/null
+++ b/challenge-280/deadmarshal/modula-3/ch2/src/m3makefile
@@ -0,0 +1,5 @@
+import("libm3")
+import("libsio")
+implementation("Ch2")
+program("ch2")
+
diff --git a/challenge-280/deadmarshal/perl/ch-1.pl b/challenge-280/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..e43ada075e
--- /dev/null
+++ b/challenge-280/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,12 @@
+#!usr/bin/env perl
+use strict;
+use warnings;
+
+sub twice_appearance{
+ reverse($_[0]) =~ /.*(.).*?\1/
+}
+
+printf "%s\n",twice_appearance('acbddbca');
+printf "%s\n",twice_appearance('abccd');
+printf "%s\n",twice_appearance('abcdabbb');
+
diff --git a/challenge-280/deadmarshal/perl/ch-2.pl b/challenge-280/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..18fb888b63
--- /dev/null
+++ b/challenge-280/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,13 @@
+#!usr/bin/env perl
+use strict;
+use warnings;
+
+sub count_asterisks{
+ my $str = $_[0] =~ s/\|[^\|]*\|//gmixr;
+ $_ = () = $str =~ /(\*)/gmix;
+}
+
+printf "%d\n",count_asterisks('p|*e*rl|w**e|*ekly|');
+printf "%d\n",count_asterisks('perl');
+printf "%d\n",count_asterisks('th|ewe|e**|k|l***ych|alleng|e');
+
diff --git a/challenge-280/deadmarshal/raku/ch-1.raku b/challenge-280/deadmarshal/raku/ch-1.raku
new file mode 100644
index 0000000000..e17fd56d8d
--- /dev/null
+++ b/challenge-280/deadmarshal/raku/ch-1.raku
@@ -0,0 +1,11 @@
+#!usr/bin/env raku
+
+sub twice-appearance($str)
+{
+ $str.flip ~~ /.*(.).*?$0/
+}
+
+say twice-appearance('acbddbca');
+say twice-appearance('abccd');
+say twice-appearance('abcdabbb');
+
diff --git a/challenge-280/deadmarshal/raku/ch-2.raku b/challenge-280/deadmarshal/raku/ch-2.raku
new file mode 100644
index 0000000000..200b0feac8
--- /dev/null
+++ b/challenge-280/deadmarshal/raku/ch-2.raku
@@ -0,0 +1,12 @@
+#!usr/bin/env raku
+
+sub count-asterisks($str)
+{
+ my @arr = $str.split('|');
+ (@arr[0,2...@arr.end]).comb(/\*/).elems
+}
+
+say count-asterisks('p|*e*rl|w**e|*ekly|');
+say count-asterisks('perl');
+say count-asterisks('th|ewe|e**|k|l***ych|alleng|e');
+