diff options
| author | deadmarshal <adeadmarshal@gmail.com> | 2023-03-11 17:03:30 +0330 |
|---|---|---|
| committer | deadmarshal <adeadmarshal@gmail.com> | 2023-03-11 17:03:30 +0330 |
| commit | 2a9c7f49feef90d54aa477b5a80c2979a548cb81 (patch) | |
| tree | 5fb8608f2180ff313d56efab79e51001768b2494 /challenge-207/deadmarshal/modula-3 | |
| parent | 1f9e919800ebc28992c10467f2e9a2d1afe90169 (diff) | |
| download | perlweeklychallenge-club-2a9c7f49feef90d54aa477b5a80c2979a548cb81.tar.gz perlweeklychallenge-club-2a9c7f49feef90d54aa477b5a80c2979a548cb81.tar.bz2 perlweeklychallenge-club-2a9c7f49feef90d54aa477b5a80c2979a548cb81.zip | |
TWC207
Diffstat (limited to 'challenge-207/deadmarshal/modula-3')
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") + |
