Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import re
- from itertools import product
- data_file_in = open("observation_mix.txt", "r")
- matrix = [[],[],[],[],[],[],[],[],[],[],[]]
- for line in data_file_in:
- rec = []
- send = []
- send.extend(re.findall('\d+', line.partition(":")[0]))
- rec.extend(re.findall('\d+', line.split(":",1)[1]))
- for sender in send:
- matrix[int(sender)].append(rec)
- #for list in matrix:
- # print(list)
- # for element in list:
- # print (element)
- #print(matrix[1][0])
- def createTupel(m, matrix, user):
- matrices = []
- for x in range(0,m):
- matrices.append(matrix[user][x])
- myprod = list(product(*matrices))
- return myprod
- def checkTupel(tupel,m, matrix, user):
- deleteTupel = []
- #print tupel
- for element in tupel:
- #print element
- for i in range(m,len(matrix[user])):
- check = 0
- for x in element:
- #print(matrix[user][i])
- if x in matrix[user][i]:
- check = check + 1
- #print check
- if check == 0:
- if element not in deleteTupel:
- deleteTupel.append(element)
- break
- hits = list(set(tupel) - set(deleteTupel))
- seen = set()
- unique = []
- for x in hits:
- srtd = tuple(sorted(x))
- if srtd not in seen:
- unique.append(x)
- seen.add(srtd)
- return unique
- def hittingSet(matrix):
- for user in range(1, len(matrix)):
- hittingSet = []
- m=1
- while len(hittingSet) == 0:
- tupels = createTupel(m,matrix,user)
- hittingSet = checkTupel(tupels,m,matrix,user)
- m = m + 1
- print (user, hittingSet)
- hittingSet(matrix)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement