def solve(outlets, plugs, N, L): #print outlets, plugs plugs.sort()
shuffle = [] switch = [] unknown = [] for i in range(L): ips = [(p >> i) % 2 for p in plugs] ios = [(o >> i) % 2 for o in outlets] print i, ips, ios if ips.count(1) == ios.count(1): if ips.count(1) == ips.count(0): unknown.append(i) elif ips.count(0) == ios.count(1): if ips.count(1) == ips.count(0): unknown.append(i) else: shuffle.append(i) else: return "NOT POSSIBLE" shuffled_outlets = outlets[:] for s in shuffle: shuffled_outlets = [o ^ pow(2, s) for o in shuffled_outlets]
result = len(shuffle) print plugs print shuffled_outlets
if plugs == shuffled_outlets: return str(result)
for i in range(len(unknown)): for j in itertools.combinations(unknown, i+1): shuffled_outlets2 = shuffled_outlets[:] for k in j: shuffled_outlets2 = [o ^ pow(2, k) for o in shuffled_outlets2] shuffled_outlets2.sort() #print shuffled_outlets if plugs == shuffled_outlets2: return str(result + i + 1)
return "NOT POSSIBLE" for i in range(T): N, L = map(int, fin.readline().split()) outlets = [int(n, 2) for n in (fin.readline().split())] plugs = [int(n, 2) for n in (fin.readline().split())] print 'o', outlets print 'p', plugs solution = solve(outlets, plugs, N, L) if N == 1 and solution == "NOT POSSIBLE": print "ERROR1" if solution != "NOT POSSIBLE" and N < int(solution): print "ERROR2" answer = "Case #%d: %s\n" % (i+1, solution) print answer fout.write(answer)
RECENT COMMENT