yard = ['f','','','','h','',''] count = 0 #How many possible, total states are there? def chase(yard, depth): global count print(count, depth, end="") print(yard) #CHECK END GAME STATE, IF REACHED THEN RETURN flag = 0 for x in range(len(yard)): if yard[x] == 'h': flag += 1 break for y in range(len(yard)): if yard[y] == 'f': flag += 1 break if (flag <= 1): #Fox has eaten hare return #if (depth > 3): # return count += 1 #IF NOT RETURNED, UPDATE FOX yard[y] = '' if (x > y): yard[y+1] = 'f' if (x < y): yard[y-1] = 'f' #######SIMPLE #yard_new = yard.copy() #chase(yard_new, depth+1) #return #MAKE TWO VERSIONS OF YARD. ONE WHERE HARE JUMPS LEFT, ANOTHER TO THE RIGHT yard_left = yard.copy() yard_right = yard.copy() if (x-2 >= 0): yard_left[x] = '' yard_left[x-2] = 'h' chase(yard_left, depth+1) if (x+2 < len(yard)): yard_right[x] = '' yard_right[x+2] = 'h' chase(yard_right, depth+1) chase(yard, 0)