Пример #1
0
#!/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
Пример #2
0
#!/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):