Ajuda com algoritmo de labirinto em python

4 respostas
pythonprogramaçãoarray
A

Bom dia. Alguém pode ajudar? Estou iniciando em Python e preciso implementar um algoritmo que leia um arquivo de texto, o carregue em uma matriz e percorra o labirinto até resolvê-lo. O caminho que pode ser percorrido é marcado por . Enquanto o + significa caminho fechado. O local que vou percorrer para resolver o labirinto deve ser marcado com @. Bom, fiz a leitura do arquivo, conforme código abaixo. A dúvida é como eu posso percorrer ele, já que não consigo acessar linhas e colunas desse array.

Código:

matriz = []

arquivo = open(lab2.txt, r)

linha = arquivo.readline()

while linha!= “”:

elementos = linha.split()

for n in range(len(elementos)):

elementos[n] = (elementos[n])

matriz.append(elementos)

linha = arquivo.readline()

#arquivo.close()

print(matriz)

Matriz gerada: [[’+++++++++++.’], [’+…++.’], [’+.++++++…’], [’+.++++++++++’], [’+…+’], [’++++++++++.+’], [’+…++.+’], [’+.+++++.++.+’], [’+.+++++.++.+’], [’+…+…+’], [’+++++.++++++’], [’+++++.++++++’]]

Como acessar cada um desses elementos para percorrer o labirinto?

4 Respostas

T

Elementos em matrizes podem ser acessados de várias formas. Um dos mais comuns é pelo índice dos elementos. Em Python, você pode fazer algo como:

matriz = [[1,2,3,4], [5,6,7,8]]

print(matriz[0][2]) # imprime 3

Para acessar todos os elementos, pode fazer um loop. Por exemplo:

for i in range(len(matriz)):
	for j in range(len(matriz[i])):
		print(matriz[i][j])

Exemplo rodando: https://ideone.com/Q44wnr

Abraço.

A

Obrigado pelo retorno. Mas no caso, como eu transformaria isso: [’+.++++++…’], nisso: [’+,.,+,+,+,+,+,+,.,.,.’], para conseguir acessar cada elemento desses?

T

Você pode fazer cast (um tipo de conversão implícita) de uma string para list. Isso vai transformar a string em uma lista, com cada caractere em uma posição da lista:

fff = "++.."

print(fff) # vai exibir ++..

fff = list(fff)

print(fff) # vai exibir ['+', '+', '.', '.']

Note que o que você precisa é de uma lista/array com cada caractere em uma posição. O exemplo que você deu ( [’+,.,+,+,+,+,+,+,.,.,.’] ) é uma lista com apenas 1 string com todos os caracteres, que é diferente do que você precisa.

Abraço.

A

No caso do meu algoritmo, tentei usar:
matriz = list(matriz)
print(matriz)

Continua do mesmo jeito. Teria alguma maneira de fazer isso desse jeito?

Criado 13 de junho de 2020
Ultima resposta 13 de jun. de 2020
Respostas 4
Participantes 2