0
私は.txtファイルから迷路を読み込んで辞書に変換する機能を持っています。辞書のキーは迷路のセルで、値は基点です。 「真」の値は、壁が北部などに存在することを意味します。 これは私の機能が何をするかです:pythonで辞書として保存された迷路を印刷するには?
def importa(maze):
lab=open(maze, 'r')
l=list(lab.readlines())
if len(l)==0:
return None
righe=len(l)
colonne=(len(l[0])-1)
maze=dict()
for r in range(1,righe-1,2):
for c in range(1,colonne-1,2):
nord=l[r-1][c]=='*'
sud=(l[r+1][c]=='*')
est=(l[r][c+1]=='*')
ovest=(l[r][c-1]=='*')
maze[(r//2,c//2)]=[{'N':nord,'S':sud,'E':est,'O':ovest},'']
#la stringa vuota è lo stato della cella
return maze
例えば迷路がある:
{(0, 0): [{'N': True, 'S': False, 'E': True, 'O': True}, ''], (0, 1): [{'N': True, 'S': False, 'E': True, 'O': True}, ''], (0, 2): [{'N': True, 'S': True, 'E': False, 'O': True}, ''], (0, 3): [{'N': True, 'S': False, 'E': False, 'O': False}, ''], (0, 4): [{'N': True, 'S': True, 'E': True, 'O': False}, ''], (1, 0): [{'N': False, 'S': True, 'E': False, 'O': True}, ''], (1, 1): [{'N': False, 'S': False, 'E': False, 'O': False}, ''], (1, 2): [{'N': True, 'S': False, 'E': False, 'O': False}, ''], (1, 3): [{'N': False, 'S': True, 'E': True, 'O': False}, ''], (1, 4): [{'N': True, 'S': False, 'E': False, 'O': True}, ''], (2, 0): [{'N': True, 'S': True, 'E': False, 'O': True}, ''], (2, 1): [{'N': False, 'S': False, 'E': True, 'O': False}, ''], (2, 2): [{'N': False, 'S': False, 'E': False, 'O': True}, ''], (2, 3): [{'N': True, 'S': True, 'E': False, 'O': False}, ''], (2, 4): [{'N': False, 'S': False, 'E': True, 'O': False}, ''], (3, 0): [{'N': True, 'S': False, 'E': True, 'O': True}, ''], (3, 1): [{'N': False, 'S': True, 'E': True, 'O': True}, ''], (3, 2): [{'N': False, 'S': True, 'E': False, 'O': True}, ''], (3, 3): [{'N': True, 'S': False, 'E': True, 'O': False}, ''], (3, 4): [{'N': False, 'S': False, 'E': True, 'O': True}, ''], (4, 0): [{'N': False, 'S': True, 'E': False, 'O': True}, ''], (4, 1): [{'N': True, 'S': True, 'E': False, 'O': False}, ''], (4, 2): [{'N': True, 'S': True, 'E': False, 'O': False}, ''], (4, 3): [{'N': False, 'S': True, 'E': True, 'O': False}, ''], (4, 4): [{'N': False, 'S': True, 'E': True, 'O': True}, '']}
私はこのように私の迷路を表示する関数記述する必要があります。 enter image description here
を誰かが助けることができます私?
私は機能を構築しようとしたが、それは非常に長いようだ...その目的のために
def stampa(L):
labirinto=[]
for r in range(righe_colonne(L)[0]):
riga=[]
for cella in celle(L):
if cella[0]==r:
if L[cella][0]['O']==True:
riga.append('| ')
if L[cella][0]['O']==False:
riga.append(' ')
if cella[1]==righe_colonne(L)[1]-1:
if L[cella][0]['E']==True:
riga.append('|')
if L[cella][0]['E']==False:
riga.append(' ')
labirinto.append(''.join(str(x) for x in riga))
#cosi ho le righe pari, quelle che contengono le celle.
#ora voglio le righe fra le celle
labirinto2=[]
for r in range(righe_colonne(L)[0]):
riga=['+']
for cella in celle(L):
if cella[0]==r:
if L[cella][0]['N']==True:
riga.append('---+')
if L[cella][0]['N']==False:
riga.append(' +')
labirinto2.append(''.join(str(x) for x in riga))
m=''
for e in range(0, len(labirinto)):
m+=labirinto2[e]+'\n'+labirinto[e]+'\n'
#aggiungo l'ultima riga
riga=[]
for cella in celle(L):
if cella[0]==righe_colonne(L)[0]-1:
if L[cella][0]['S']==True:
riga.append('+---')
if L[cella][0]['S']==False:
riga.append(' ')
riga.append('+')
m+=(''.join(str(x) for x in riga))
m+='\n'
print(m)
あなたはこれまで何を持っていますか? –
印刷するメディアの種類は? HTML/CSSのブラウザでは?プレーンテキストのコンソールでは? –
また、隣接する2つのセルに境界線がある場合の状況の処理方法は?例えば。 '{(" 0 "):[{" E ":True}]、(0,1):[{" W ":True}]}'。この場合、国境は2倍にする必要がありますか? –