a.py (661B)
1 import fileinput 2 3 def readline(line): 4 m = 0 5 for i in range(1, line.index(']')): 6 if line[i] == '#': 7 m |= 1 << (i-1) 8 9 b = [] 10 j = line.index(']') 11 while '(' in line[j:]: 12 i = line[j:].index('(') + j + 1 13 j = line[i:].index(')') + i 14 x = 0 15 for y in line[i:j].split(','): 16 x |= 1 << int(y) 17 b.append(x) 18 19 return m, b 20 21 def works(m, b, s): 22 x = 0 23 for j in range(len(s)): 24 if s[j] == '1': 25 x ^= b[j] 26 return x == m 27 28 def sol(m, b): 29 s = 99999999 30 for i in range(2**len(b)): 31 if works(m, b, bin(i)[2:].rjust(len(b), '0')): 32 s = min(s, i.bit_count()) 33 return s 34 35 with fileinput.input() as lines: 36 print(sum(sol(*readline(line)) for line in lines)) 37