示例#1
0
from kenken import Puzzle, ConstraintLabel

def error(msg):
  print msg 
  sys.exit(1)

if len(sys.argv) != 2:
  error("Usage: " + sys.argv[0] + " <input>")

puzzle = Puzzle(sys.argv[1])
n = puzzle.n

# Ensure all answers are in correct range
for i in range(n):
  for j in range(n):
    answer = puzzle.getAnswer(i, j)
    if answer <= 0 or answer > n:
      error("Answer out of correct range (" + str(answer) + ")")

# Ensure row constraints are met
for i in range(n):
  used = [False for j in range(n)]
  for j in range(n):
    answer = puzzle.getAnswer(i, j)
    if used[answer - 1]:
      error("Row constraint violated (" + str(i) + ", " + str(j) + ")")
    used[answer - 1] = True

# Ensure column constraints are met
for j in range(n):
  used = [False for i in range(n)]
示例#2
0
    if i + 1 < n and not puzzle.inSameConstraint(i, j, i + 1, j):
      draw.line([x, y + cellSize, x + cellSize, y + cellSize], width=2)
    if j + 1 < n and not puzzle.inSameConstraint(i, j, i, j + 1):
      draw.line([x + cellSize, y, x + cellSize, y + cellSize], width=2)

# Draw constraint labels
for constraint in puzzle.constraints:
  cell = constraint.label.cell
  draw.text((cell[1] * cellSize + 5, cell[0] * cellSize + 5), 
            str(constraint.label), font=smallFont)

# Draw answers (if any)
for i in range(n):
  for j in range(n):
    answer = puzzle.getAnswer(i , j)

    if answer == -1:
      continue

    xOffset = 30;
    if answer < 10:
      xOffset += 10;

    draw.text((j * cellSize + xOffset, i * cellSize + 40), str(answer),
              font=largeFont)


del draw

# save created image