Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- mtx = None
- mtx_len = None
- def read_input():
- global mtx
- global mtx_len
- with open('input.txt', 'r') as fin:
- mtx = [[int(num) for num in line.split(' ')] for line in fin]
- mtx_len = len(mtx)
- def associativity():
- for i in range(mtx_len):
- for j in range(mtx_len):
- for k in range(mtx_len):
- if mtx[mtx[i][j]][k] != mtx[i][mtx[j][k]]:
- return False
- return True
- def neutral_element():
- for i in range(mtx_len):
- if mtx[i] == [i for i in range(mtx_len)]:
- return i
- return None
- def inverse_element():
- e = neutral_element()
- if e == None:
- return False
- cnt = 0
- for i in range(mtx_len):
- for j in range(mtx_len):
- if (mtx[i][j] == e) and (mtx[j][i] == e):
- cnt += 1
- break
- if cnt == mtx_len:
- return True
- else:
- return False
- def commutativity():
- for i in range(mtx_len):
- for j in range(mtx_len):
- if mtx[i][j] != mtx[j][i]:
- return False
- return True
- def closure():
- for i in range(mtx_len):
- for j in range(mtx_len):
- if mtx[i][j] not in range(mtx_len):
- return False
- return True
- if __name__ == '__main__':
- read_input()
- if associativity() == True:
- if neutral_element() != None:
- if inverse_element() == True:
- if commutativity() == True:
- print('Abelian group')
- else:
- print('Group')
- else:
- print('Semigroup')
- else:
- if commutativity() == True:
- print('Abelian monoid')
- else:
- print('Monoid')
- else:
- print('Magma')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement