Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from timeit import timeit
- from os import listdir
- import threading
- timeouttime = 5 #this may be changed later
- def verify(a, A):
- for b in A:
- if all(a[i] == b[i] or b[i] == '*' for i in range(26)):
- return False
- return True
- def read(filename):
- with open(filename, "r") as f:
- A = []
- for x in f:
- x = x.strip()
- name, mask = x.split('')
- a = [''] 26
- for c in name:
- a[ord(c) - ord('a')] = '0'
- for c in mask:
- a[ord(c) - ord('a')] = '1'
- A.append(''.join(a))
- return A
- def find(filename):
- A = read(filename)
- A.sort()
- for i in range(2*26):
- s = bin(i)[2:].zfill(26)
- if verify(s, A):
- break
- def find_timeout(filename):
- p = threading.Thread(target=find, args=(filename,))
- p.start()
- p.join(timeout_time)
- def main():
- files = listdir("./tests")
- times = [timeit(lambda: find_timeout("./tests/"+file), number=1) for file in files]
- print([time if time < timeout_time else "inf" for time in times])
- if name == "main":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement