Advertisement
MrHitch

Untitled

Apr 8th, 2020
314
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.83 KB | None | 0 0
  1. mtx = None
  2. mtx_len = None
  3.  
  4.  
  5. def read_input():
  6.     global mtx
  7.     global mtx_len
  8.     with open('input.txt', 'r') as fin:
  9.         mtx = [[int(num) for num in line.split(' ')] for line in fin]
  10.  
  11.     mtx_len = len(mtx)
  12.  
  13.  
  14. def associativity():
  15.     for i in range(mtx_len):
  16.         for j in range(mtx_len):
  17.             for k in range(mtx_len):
  18.                 if mtx[mtx[i][j]][k] != mtx[i][mtx[j][k]]:
  19.                     return False
  20.     return True
  21.  
  22.  
  23. def neutral_element():
  24.     for i in range(mtx_len):
  25.         if mtx[i] == [i for i in range(mtx_len)]:
  26.             return i
  27.     return None
  28.  
  29.  
  30. def inverse_element():
  31.     e = neutral_element()
  32.     if e == None:
  33.         return False
  34.     cnt = 0
  35.     for i in range(mtx_len):
  36.         for j in range(mtx_len):
  37.             if (mtx[i][j] == e) and (mtx[j][i] == e):
  38.                 cnt += 1
  39.                 break
  40.     if cnt == mtx_len:
  41.         return True
  42.     else:
  43.         return False
  44.  
  45.  
  46. def commutativity():
  47.     for i in range(mtx_len):
  48.         for j in range(mtx_len):
  49.             if mtx[i][j] != mtx[j][i]:
  50.                 return False
  51.     return True
  52.  
  53.  
  54. def closure():
  55.     for i in range(mtx_len):
  56.         for j in range(mtx_len):
  57.             if mtx[i][j] not in range(mtx_len):
  58.                 return False
  59.     return True
  60.  
  61.  
  62. if __name__ == '__main__':
  63.     read_input()
  64.     if associativity() == True:
  65.         if neutral_element() != None:
  66.             if inverse_element() == True:
  67.                 if commutativity() == True:
  68.                     print('Abelian group')
  69.                 else:
  70.                     print('Group')
  71.             else:
  72.                 print('Semigroup')
  73.         else:
  74.             if commutativity() == True:
  75.                 print('Abelian monoid')
  76.             else:
  77.                 print('Monoid')
  78.     else:
  79.         print('Magma')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement