""" Verify the 7-day schedule for the 24-person rowing meet. """ import itertools, json N, TOTAL = 24, 276 def norm(p, q): return (min(p, q), max(p, q)) sched = json.loads('''[ [[0,1,2,21,22,23],[3,4,5,18,19,20],[6,7,8,15,16,17],[9,10,11,12,13,14]], [[3,4,5,21,22,23],[0,1,2,6,7,8],[9,10,11,18,19,20],[12,13,14,15,16,17]], [[6,7,8,21,22,23],[3,4,5,9,10,11],[0,1,2,12,13,14],[15,16,17,18,19,20]], [[9,10,11,21,22,23],[6,7,8,12,13,14],[3,4,5,15,16,17],[0,1,2,18,19,20]], [[12,13,14,21,22,23],[9,10,11,15,16,17],[6,7,8,18,19,20],[0,1,2,3,4,5]], [[15,16,17,21,22,23],[12,13,14,18,19,20],[0,1,2,9,10,11],[3,4,5,6,7,8]], [[18,19,20,21,22,23],[0,1,2,15,16,17],[3,4,5,12,13,14],[6,7,8,9,10,11]] ]''') # Verify each day partitions 0..23 into 4 groups of 6 for di, day in enumerate(sched): items = set() for boat in day: assert len(boat) == 6, f"Day {di+1}: boat has {len(boat)} elements" items.update(boat) assert len(items) == 24, f"Day {di+1}: has {len(items)} distinct elements (need 24)" print(f"Day {di+1}: ✓ (24 people, 4 boats of 6)") # Count all pairs covered pairs = set() for day in sched: for boat in day: pairs.update(norm(p, q) for p, q in itertools.combinations(boat, 2)) print(f"\nDistinct pairs covered: {len(pairs)} / {TOTAL}") if len(pairs) == TOTAL: print("SUCCESS! All 276 pairs share a boat on at least one day. ✓") else: missing = set(norm(i, j) for i in range(N) for j in range(i + 1, N)) - pairs print(f"FAILED! Missing {len(missing)} pairs: {sorted(missing)}")