Write a program that is able to read and store relations and to perform membership/relationship queries.
In this exercise, by convention, we deal with relations over the finite set of natural numbers from 0 to n-1.
Input will consist of several commands. Each command may be a relationship matrix declaration, a relationship list declaration or a member / relationship query.
Each matrix declaration begins with a line
containing the word matrix
and number n
indicating the size of the domain and co-domain.
This is followed by n lines with a matrix representation.
Each list declaration begins with a line
containing the word list
and number n.
This is followed by zero or more lines
with the ordered pairs of the relation
followed by a line containing a dash -
.
Each member query consist of the word member
followed by
two numbers x and y.
For each member query, your program should print whether x is related to y in the latest given relation (either by matrix or list declarations).
matrix 3
0 1 1
0 0 1
0 0 0
member 0 0
member 1 2
list 4
1 1
2 2
-
member 0 0
member 1 1
no
yes
no
yes
try first: rel-ltom rel-mtol set-member
try next: rel-properties rel-composition
Copyright © 2020-2021 Rudy Matela
This text is available under the CC BY-SA 4.0 license.
Originally available on cscx.org/rel-member