aboutsummaryrefslogtreecommitdiff
path: root/challenge-285
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-285')
-rw-r--r--challenge-285/deadmarshal/modula-3/ch1/src/Ch1.m325
1 files changed, 22 insertions, 3 deletions
diff --git a/challenge-285/deadmarshal/modula-3/ch1/src/Ch1.m3 b/challenge-285/deadmarshal/modula-3/ch1/src/Ch1.m3
index 8f6f2ea985..0cf0ee508a 100644
--- a/challenge-285/deadmarshal/modula-3/ch1/src/Ch1.m3
+++ b/challenge-285/deadmarshal/modula-3/ch1/src/Ch1.m3
@@ -1,6 +1,6 @@
MODULE Ch1 EXPORTS Main;
-IMPORT SIO;
+IMPORT SIO,TextIntTbl;
VAR
A1 := ARRAY[0..2],[0..1] OF TEXT{
@@ -9,8 +9,27 @@ VAR
ARRAY[0..1] OF TEXT{"C","A"}};
A2 := ARRAY[0..0],[0..1] OF TEXT{
ARRAY OF TEXT{"A","Z"}};
-
+
+PROCEDURE NoConnection(VAR A:ARRAY OF ARRAY OF TEXT):TEXT =
+ VAR
+ Destinations,Sources := NEW(TextIntTbl.Default).init(NUMBER(A));
+ It:TextIntTbl.Iterator;
+ K:TEXT := "";
+ V:INTEGER;
+ BEGIN
+ FOR I := FIRST(A) TO LAST(A) DO
+ EVAL Sources.put(A[I,0],1);
+ EVAL Destinations.put(A[I,1],1);
+ END;
+ It := Destinations.iterate();
+ WHILE It.next(K,V) DO
+ IF Destinations.get(K,V) THEN RETURN K END
+ END;
+ RETURN ""
+ END NoConnection;
+
BEGIN
-
+ SIO.PutText(NoConnection(A1) & "\n");
+ SIO.PutText(NoConnection(A2) & "\n")
END Ch1.