diff options
| -rw-r--r-- | challenge-280/deadmarshal/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-280/deadmarshal/java/Ch1.java | 17 | ||||
| -rw-r--r-- | challenge-280/deadmarshal/java/Ch2.java | 19 | ||||
| -rw-r--r-- | challenge-280/deadmarshal/modula-3/ch1/src/Ch1.m3 | 23 | ||||
| -rw-r--r-- | challenge-280/deadmarshal/modula-3/ch1/src/m3makefile | 5 | ||||
| -rw-r--r-- | challenge-280/deadmarshal/modula-3/ch2/src/Ch2.m3 | 27 | ||||
| -rw-r--r-- | challenge-280/deadmarshal/modula-3/ch2/src/m3makefile | 5 | ||||
| -rw-r--r-- | challenge-280/deadmarshal/perl/ch-1.pl | 12 | ||||
| -rw-r--r-- | challenge-280/deadmarshal/perl/ch-2.pl | 13 | ||||
| -rw-r--r-- | challenge-280/deadmarshal/raku/ch-1.raku | 11 | ||||
| -rw-r--r-- | challenge-280/deadmarshal/raku/ch-2.raku | 12 |
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'); + |
