Skip to content

Instantly share code, notes, and snippets.

@chriszf
Last active December 28, 2015 02:19
Show Gist options
  • Save chriszf/7427127 to your computer and use it in GitHub Desktop.
Save chriszf/7427127 to your computer and use it in GitHub Desktop.
def cross(A, B):
"Cross product of elements in A and elements in B."
return [a+b for a in A for b in B]
digits = '123456789'
rows = 'ABCDEFGHI'
cols = digits
squares = cross(rows, cols)
unitlist = ([cross(rows, c) for c in cols] +
[cross(r, cols) for r in rows] +
[cross(rs, cs) for rs in ('ABC','DEF','GHI') for cs in ('123','456','789')])
units = {s: [u for u in unitlist if s in u] for s in squares}
peers = {s: {s1 for s1 in sum(units[s],[])}-{s} for s in squares}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment