DMP JS 4-9 Assignment
DMP JS 4-9 Assignment
Assignment – 4
Question :-
Write a Python function that takes a list of pairs as an argument and determines if the
argument constitutes a function or a general relation.
def is_function_or_relation(pairs):
domain = set()
codomain = set()
seen_inputs = set()
for pair in pairs:
if len(pair) != 2:
return "Invalid pair format. Each pair should have exactly two elements."
input_value, output_value = pair
domain.add(input_value)
codomain.add(output_value)
if input_value in seen_inputs:
return "Not a function. Multiple outputs for the same input."
seen_inputs.add(input_value)
if len(domain) == len(codomain):
return "Function"
else:
return "General Relation"
def main():
pairs_str = input("Enter pairs as comma-separated values (e.g., 1,2 3,4): ")
pairs_list = [tuple(map(int, pair.split(','))) for pair in pairs_str.split()]
result = is_function_or_relation(pairs_list)
print(f"The entered pairs constitute a: {result}")
if __name__ == "__main__":
main()
Output :-
def is_function(pairs):
"""
Determines whether a list of pairs represents a function or a general relation.
Args:
pairs (list of pairs): A list of pairs representing the input-output pairs of the
relation.
Returns:
bool: True if the relation represents a function, False otherwise.
"""
input_values = set()
for pair in pairs:
input_value = pair[0]
if input_value in input_values:
return False
else:
input_values.add(input_value)
return True
pairs1 = [(1, 2), (2, 3), (3, 4)]
pairs2 = [(1, 2), (1, 3), (2, 4)]
is_function_result1 = is_function(pairs1)
is_function_result2 = is_function(pairs2)
print(f"Is the first relation a function? {is_function_result1}")
print(f"Is the second relation a function? {is_function_result2}")
Output :-
Assignment – 5
Question :-
def get_user_input():
set_elements = input("Enter elements of the set separated by spaces: ").split()
set_elements = sorted(set(set_elements))
relation_size = int(input("Enter the size of the relation: "))
relation = []
for i in range(relation_size):
pair = input(f"Enter pair {i + 1} as comma-separated values (e.g., 1,2): ").split(',')
relation.append((pair[0], pair[1]))
return set_elements, relation
def create_matrix(set_elements, relation):
matrix_size = len(set_elements)
matrix = [[0] * matrix_size for _ in range(matrix_size)]
for pair in relation:
index1 = set_elements.index(pair[0])
index2 = set_elements.index(pair[1])
matrix[index1][index2] = 1
return matrix
def print_matrix(matrix, set_elements):
print("Matrix Representation:")
header = [" "] + list(set_elements)
print("\t".join(header))
for i, row in enumerate(matrix):
row_str = f"{list(set_elements)[i]}\t" + "\t".join(map(str, row))
print(row_str)
def main():
set_elements, relation = get_user_input()
matrix = create_matrix(set_elements, relation)
print_matrix(matrix, set_elements)
if __name__ == "__main__":
main()
Output :-
matrix_size = len(set_elements)
matrix = [[0] * matrix_size for _ in range(matrix_size)]
for pair in relation:
index1 = set_elements.index(pair[0])
index2 = set_elements.index(pair[1])
matrix[index1][index2] = 1
return matrix
def print_matrix(matrix, set_elements):
print("Matrix Representation:")
header = [" "] + list(set_elements)
print("\t".join(header))
for i, row in enumerate(matrix):
row_str = f"{list(set_elements)[i]}\t" + "\t".join(map(str, row))
print(row_str)
def main():
set_elements = ['a', 'b', 'c']
relation = [('a', 'b'), ('b', 'c'), ('c', 'a')]
matrix = relation_to_matrix(set_elements, relation)
print_matrix(matrix, set_elements)
if __name__ == "__main__":
main()
Output :-
Assignment – 6
Question :-
import itertools
def evaluate_expression(expression, variable_values):
stack = []
for char in expression:
if char.isalpha():
stack.append(variable_values[char])
elif char == '¬':
operand = stack.pop()
stack.append(not operand)
elif char == '∧':
operand2 = stack.pop()
operand1 = stack.pop()
stack.append(operand1 and operand2)
elif char == '∨':
operand2 = stack.pop()
operand1 = stack.pop()
stack.append(operand1 or operand2)
return stack[0]
def generate_truth_table(variables):
values_combinations = list(itertools.product([False, True], repeat=len(variables)))
table_header = variables + ["Result"]
print("\t".join(table_header))
for values in values_combinations:
variable_values = dict(zip(variables, values))
result = evaluate_expression(expression, variable_values)
row_values = [str(value) for value in values] + [str(result)]
print("\t".join(row_values))
if __name__ == "__main__":
expression = input("Enter a propositional logic expression using ¬ (not), ∧ (and), ∨
(or): ")
variables = sorted(set(char for char in expression if char.isalpha()))
print("\nTruth Table:")
generate_truth_table(variables)
Output :-
import itertools
def evaluate_expression(expression, variable_values):
stack = []
for char in expression:
if char.isalpha():
stack.append(variable_values[char])
elif char == '¬':
operand = stack.pop()
stack.append(not operand)
elif char == 'and':
operand2 = stack.pop()
operand1 = stack.pop()
stack.append(operand1 and operand2)
elif char == 'or':
operand2 = stack.pop()
operand1 = stack.pop()
stack.append(operand1 or operand2)
return stack[0]
def generate_truth_table(variables, expression, max_rows=5):
values_combinations = list(itertools.product([False, True], repeat=len(variables)))
table_header = variables + [expression]
print("\t".join(table_header))
for i, values in enumerate(values_combinations):
if i >= max_rows:
print("...")
break
variable_values = dict(zip(variables, values))
result = evaluate_expression(expression, variable_values)
row_values = [str(value) for value in values] + [str(result)]
print("\t".join(row_values))
if __name__ == "__main__":
expression = "p and q or not r"
variables = sorted(set(char for char in expression if char.isalpha()))
print("\nPartial Truth Table:")
generate_truth_table(variables, expression, max_rows=5)
Output :-
Assignment – 7
Question :-
Output :-
Output :-
Assignment – 8
Question :-
Output :-
Output :-
Assignment – 9
Question :-
Output :-
Output :-