4 ms·
The article's definition of not revealing information is a bit unclear, but if we understand it as Eve not knowing who holds any single card, your solution seem
by ashdnazg 2y ago
The article's definition of not revealing information is a bit unclear, but if we understand it as Eve not knowing who holds any single card, your solution seems to work. At least assuming the following code is correct :)
import itertools
import functools
for eve_card in range(7):
cards_left = set(range(7))
cards_left.remove(eve_card)
mod_to_cards = [[], [], [], [], [], [], []]
for c in itertools.combinations(cards_left, 3):
mod = sum(c) % 7
mod_to_cards[mod].append(set(c))
for combs in mod_to_cards:
i = functools.reduce(lambda x, y: x.intersection(y), combs)
if len(i) != 0:
print("intersection", eve_card, combs, i)
u = functools.reduce(lambda x, y: x.union(y), combs)
if len(u) != 6:
print("union", eve_card, combs, u)