Python での食品充填アルゴリズムを完成させました。整数で満たされた N*N 行列で実行されます。どういうわけかその仕組みをアニメーション化したいと思います。どういうわけかコンソールで可能ですか?更新の間に wait() を使用してノードを更新するようなものを考えています。
1 に答える
2
次のようなものを使用できます。
#! /usr/bin/python3
import time
m = [ [c for c in line] for line in '''............................
..XXXXXXXXXX...........XXX..
..X........X...........X.X..
..XXXXXX...X....XXXXXXXX.X..
.......X...X....X........X..
....XXXX...XXXXXX........X..
....X....................X..
....X.................XXXX..
....XXXXXXXXXXXXXXXXXXX.....'''.split ('\n') ]
def flood (matrix, start):
maxX = len (matrix [0] )
maxY = len (matrix)
tbf = [start]
while tbf:
x, y = tbf [0]
tbf = tbf [1:]
if x < 0 or x >= maxX or y < 0 or y >= maxY: continue
if matrix [y] [x] == 'X': continue
matrix [y] [x] = 'X'
tbf += [ (x + 1, y), (x - 1, y), (x, y + 1), (x, y - 1) ]
print ('\x1b[0J\x1b[1;1H') #Clear screen and position cursor top left
for line in matrix: print (''.join (line) )
time.sleep (.2)
#flood (m, (0, 0) )
flood (m, (4, 2) )
これは、ANSI エスケープ シーケンス (CSI) をサポートするすべてのコンソールで動作するはずです。色の出力には同じ CSI コードを使用できます ( Wiki )。
于 2013-07-28T17:57:53.953 に答える