があなたの
- 入力と仮定すると、ピクセルのリストであり、各ピクセルは(属性
top
、left
、bottom
とright
を持っていることを与えられたピクセルのグリッド(完成したパズルを)クリートありません周囲のピクセルへの参照)とあなたの
- 出力は、2次元配列の画素
grid
になります
次のようにあなたができることは:
def pixel_graph_to_grid(pixels):
if len(pixels) == 0:
return [[]]
# (1) Finding the top left pixel.
p = pixels[0]
while p.top:
p = p.top
while p.left:
p = p.left
# (2) Go row-wise through the image.
grid = []
first_of_row = p
while True:
p = first_of_row
row = [p]
while p.right:
p = p.right
row.append(p)
grid.append(row)
if first_of_row.bottom:
first_of_row = first_of_row.bottom
else:
break
また、あなたはグリッドのために割り当てる必要がどのくらいのメモリを知っている(1)
にいくつかのカウントと同様の操作を行うことができます。
このアルゴリズムは線形実行時間を持ち、一定の余分なスペースを必要とするため、最適でなければなりません。
参照はどのような順序で並べられていますか?ジグソーパズルのピースは、それがどの4つのものに接続するのかを順番に教えてくれるわけではありません。これは、外側の境界を構成して内向きに作業するのが比較的容易になります。 – Tommy
実際には、有限の境界はなく、IDを含むオブジェクト(ピクセル)の配列と、他のピクセルへの4つの参照(各方向に1つ) – user379468
"各ピクセルはパズルピースです"ということを説明できますか? – cuongptnk