aboutsummaryrefslogtreecommitdiff
path: root/challenge-207/deadmarshal/modula-3
diff options
context:
space:
mode:
authordeadmarshal <adeadmarshal@gmail.com>2023-03-11 17:03:30 +0330
committerdeadmarshal <adeadmarshal@gmail.com>2023-03-11 17:03:30 +0330
commit2a9c7f49feef90d54aa477b5a80c2979a548cb81 (patch)
tree5fb8608f2180ff313d56efab79e51001768b2494 /challenge-207/deadmarshal/modula-3
parent1f9e919800ebc28992c10467f2e9a2d1afe90169 (diff)
downloadperlweeklychallenge-club-2a9c7f49feef90d54aa477b5a80c2979a548cb81.tar.gz
perlweeklychallenge-club-2a9c7f49feef90d54aa477b5a80c2979a548cb81.tar.bz2
perlweeklychallenge-club-2a9c7f49feef90d54aa477b5a80c2979a548cb81.zip
TWC207
Diffstat (limited to 'challenge-207/deadmarshal/modula-3')
-rw-r--r--challenge-207/deadmarshal/modula-3/ch1/src/Ch1.m347
-rw-r--r--challenge-207/deadmarshal/modula-3/ch1/src/m3makefile4
-rw-r--r--challenge-207/deadmarshal/modula-3/ch2/src/Ch2.m320
-rw-r--r--challenge-207/deadmarshal/modula-3/ch2/src/m3makefile4
4 files changed, 75 insertions, 0 deletions
diff --git a/challenge-207/deadmarshal/modula-3/ch1/src/Ch1.m3 b/challenge-207/deadmarshal/modula-3/ch1/src/Ch1.m3
new file mode 100644
index 0000000000..04ba90c5ef
--- /dev/null
+++ b/challenge-207/deadmarshal/modula-3/ch1/src/Ch1.m3
@@ -0,0 +1,47 @@
+MODULE Ch1 EXPORTS Main;
+
+IMPORT IO,Text,ASCII;
+
+VAR
+ A1:ARRAY[0..3] OF TEXT := ARRAY OF TEXT{"Hello","Alaska","Dad","Peace"};
+ A2:ARRAY[0..1] OF TEXT := ARRAY OF TEXT{"OMG","Bye"};
+
+PROCEDURE Lower(text:TEXT):TEXT =
+ VAR
+ Res:TEXT := "";
+ BEGIN
+ FOR I := 0 TO Text.Length(text)-1 DO
+ Res := Text.Cat(Res, Text.FromChar(ASCII.Lower[Text.GetChar(text, I)]));
+ END;
+ RETURN Res;
+ END Lower;
+
+PROCEDURE AllMatch(VAR text:TEXT;VAR S:SET OF CHAR):BOOLEAN =
+ BEGIN
+ FOR I := 0 TO Text.Length(text)-1 DO
+ IF NOT Text.GetChar(text,I) IN S THEN RETURN FALSE END
+ END;
+ RETURN TRUE;
+ END AllMatch;
+
+PROCEDURE KeyboardWord(VAR A:ARRAY OF TEXT) =
+VAR
+ S1:SET OF CHAR := SET OF CHAR{'q','w','e','r','t','y','u','i','o','p'};
+ S2:SET OF CHAR := SET OF CHAR{'a','s','d','f','g','h','j','k','l'};
+ S3:SET OF CHAR := SET OF CHAR{'z','x','c','v','b','n','m'};
+BEGIN
+ FOR I := FIRST(A) TO LAST(A) DO A[I] := Lower(A[I]) END;
+ FOR I := FIRST(A) TO LAST(A) DO
+ IF AllMatch(A[I],S1) OR AllMatch(A[I],S2) OR AllMatch(A[I],S3) THEN
+ IO.Put(A[I]);
+ IO.PutChar(' ')
+ END
+ END;
+ IO.Put("\n");
+END KeyboardWord;
+
+BEGIN
+ KeyboardWord(A1);
+ KeyboardWord(A2);
+END Ch1.
+
diff --git a/challenge-207/deadmarshal/modula-3/ch1/src/m3makefile b/challenge-207/deadmarshal/modula-3/ch1/src/m3makefile
new file mode 100644
index 0000000000..0ee72d695b
--- /dev/null
+++ b/challenge-207/deadmarshal/modula-3/ch1/src/m3makefile
@@ -0,0 +1,4 @@
+import("libm3")
+implementation("Ch1")
+program("ch1")
+
diff --git a/challenge-207/deadmarshal/modula-3/ch2/src/Ch2.m3 b/challenge-207/deadmarshal/modula-3/ch2/src/Ch2.m3
new file mode 100644
index 0000000000..62f84618e9
--- /dev/null
+++ b/challenge-207/deadmarshal/modula-3/ch2/src/Ch2.m3
@@ -0,0 +1,20 @@
+MODULE Ch2 EXPORTS Main;
+
+IMPORT IO;
+
+VAR
+ A1:ARRAY[0..4] OF INTEGER := ARRAY OF INTEGER{10,8,5,4,3};
+ A2:ARRAY[0..4] OF INTEGER := ARRAY OF INTEGER{25,8,5,3,3};
+
+PROCEDURE HIndex(VAR A:ARRAY OF INTEGER):INTEGER =
+ BEGIN
+ FOR I := FIRST(A) TO LAST(A) DO
+ IF I >= A[I] THEN RETURN I END
+ END;
+ END HIndex;
+
+BEGIN
+ IO.PutInt(HIndex(A1)); IO.Put("\n");
+ IO.PutInt(HIndex(A2)); IO.Put("\n");
+END Ch2.
+
diff --git a/challenge-207/deadmarshal/modula-3/ch2/src/m3makefile b/challenge-207/deadmarshal/modula-3/ch2/src/m3makefile
new file mode 100644
index 0000000000..5c32bbc4bb
--- /dev/null
+++ b/challenge-207/deadmarshal/modula-3/ch2/src/m3makefile
@@ -0,0 +1,4 @@
+import("libm3")
+implementation("Ch2")
+program("ch2")
+