Reply
Tue 23 Feb, 2016 07:53 am

I need to modify this code to show a random walk on a 10*10 matrix. The walker will move by one element at a time labeled A through Z by moving up,down,left or right. The walker can never go outside of the matrix either.

Please help, I have never looked at programming before and I am completely lost.

#You need to debug and modify the program so that it is able to do random walking

import random

N = 10

FILLER = '.'

#create a list to represent a row

#The row at first is filled with FILLER '.'

line = []

for i in range(N):

line.append(FILLER)

#create a matrix

#The matrix is the maze to walk

a=[]

for i in range(N):

line = line[:]

a.append(line)

#always starts at the left top corner of the matrix

#fill the matrix cell at the left top corner 'A'

x = 0

y = 0

letter = 'A'

a[x][y] = letter

#a sequence of random walk steps

#The below loop will settle the next letter

letter = chr(ord(letter) + 1)

#Where to go from the current sell: right, left, down, or up?

#We need a bit of randomness

direction = random.randrange(0, 4);

#keep track of the directions tried

moves_tried = 0 #trials to put a letter

#The following loop broken either due to

#running out of letters or

#having tried four directions

while (moves_tried < 4 and letter <= 'Z'):

#turn is random but its value is always between 0 and 3

turn = (direction + moves_tried) % 4

if (turn == 0): #right

new_x = x

new_y = y + 1

elif (turn == 1): #left

new_x = x

new_y = y - 1

elif (turn == 2): #down

new_x = x + 1

new_y = y

else: #up

new_x = x - 1

new_y = y

#check the new position (new_x, new_y) to see if the letter can be settled

if (0 <= new_x and new_x < N and 0 <= new_y and new_y < N and a[new_x][new_y] == FILLER):

#label the target element and prepare the next iteration

else:

moves_tried = moves_tried + 1

for i in range(N):

#use (' '.join(a*)) to get a string*

#print the ith row a* of the matrix*