0
def sqrs(seq):
  boxes = [[] for x in range(0,9)]
  j = 0
  for y in range(0, 7, 3):
    for x in range(0, 7, 3):
      for i in range(0, 3):
        boxes[j].extend(seq[y + i][x:x + 3])
      j += 1
  return boxes

所以这个函数运行一个列表列表,它是一个 9x9 数独解决方案,并将每个 3x3 框传输到另一个列表列表。它可以完成工作,但看起来很丑。有谁知道完成这项工作的更巧妙的方法?

不,我不能使用 numpy。:(

4

1 回答 1

2

您的示例没有运行,因为li没有定义,但是如果我理解您要执行的操作,并且您不关心每个框中数字列表的顺序,那么这可行-取决于你是否认为它更光滑。

def sqrs(seq):
    indices = [(x % 3, x / 3) for x in range(0, 9)]  # Set up a list of coordinates
    boxes = [[seq[x*3+xx][y*3+yy] for xx, yy in indices] for x, y in indices]  # Use the list of coordinates both to reference the boxes and to reference the cells within the box, to reorganize the list.
    return boxes
于 2013-09-21T00:56:36.923 回答