Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 59 additions & 17 deletions labs/01/relation_analyser.py
Original file line number Diff line number Diff line change
@@ -1,36 +1,78 @@
# Implementación de métodos computacionales
# Diego Alejandro Anaya Alanis, A01663765, 08/01/2024

import graphviz # https://graphviz.readthedocs.io/en/stable/index.html
import xdg

def analyze(val):
"""
Here goes your code to do the analysis
1. Reflexive: aRa for all a in X,
2. Symmetric: aRb implies bRa for all a,b in X
3. Transitive: aRb and bRc imply aRc for all a,b,c in X,
"""

numbers = set()
for value in val:
numbers.add(value[0])
numbers.add(value[1])

reflexive = set()
for number in numbers:
reflexive.add((number,number))
Reflexive = False
for i in reflexive:
if i in val:
Reflexive = True
else:
Reflexive = False

Symmetric = False
for value in val:
s = (value[1],value[0])
if s in val:
Symmetric = True
else:
Symmetric = False

Transitive = False
for x, y in val:
for x_prima, y_prima in val:
if y == x_prima:
if (x, y_prima) in val:
Transitive = True
else:
Transitive = False

return Reflexive,Symmetric,Transitive

def plot():
"""
Here goes your code to do the plot of the set
"""
g = graphviz.Digraph('G', filename='hello.gv')
g.edge('Hello', 'World')
g.view()
def plot(val):
g = graphviz.Digraph('G', format='png', filename='hello.gv')


numbers = set()
for value in val:
numbers.add(value[0])
numbers.add(value[1])

for number in numbers:
g.node(str(number))


for pair in val:
g.edge(str(pair[0]), str(pair[1]))


g.render(filename='graph', cleanup=True)
print("Graph generated . Check 'graph.png'.")

def main():
print("Hello World analyzing input!")
val = input("Enter your set: ")
print(val)
numeros = val.replace('{', '').replace('}', '').replace('(', '').replace(')', '').replace(' ', '')
numeros = numeros.split(',')
val = {(int(numeros[i]), int(numeros[i + 1])) for i in range(0, len(numeros), 2)}
Reflexive,Symmetric,Transitive = analyze(val)
print(f"\
1. Reflexive: {Reflexive} \
2. Symmetric: {Symmetric} \
3. Transitive: {Transitive}")
plot()
1. R is Reflexive: {Reflexive} \
2. R is Symmetric: {Symmetric} \
3. R is Transitive: {Transitive}")
plot(val)

if __name__ == "__main__":
main()