#!/usr/bin/python import sys 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
#!/usr/bin/python import Image, ImageDraw, ImageFont, sys from kenken import Puzzle if len(sys.argv) != 3: print "Usage: " + sys.argv[0] + " <input> <output>" sys.exit(1) puzzle = Puzzle(sys.argv[1]) n = puzzle.n # Generate image cellSize = 100 size = n * cellSize dotLen = 3 im = Image.new("1", (size, size), "white") smallFont = ImageFont.truetype("FreeSans.ttf", 16) largeFont = ImageFont.truetype("FreeSans.ttf", 32) draw = ImageDraw.Draw(im) def drawHorizantalDottedLine(x, y, len): endX = x + len while (x < endX): draw.line([x, y, min(x + dotLen, endX), y]) x += 2 * dotLen def drawVerticalDottedLine(x, y, len): endY = y + len while (y < endY):