• Not sure if bug or I'm doing something wrong

 

I would like to give some feedback about ...

From: http://www.checkio.org/mission/count-neighbours/solve/

I'm somewhat of a newbie when it comes to python and coding in general so please bear with me. I have a problem with the second example, When I try to run it via try it, it gives the ff output:

>>> count_neighbours(((1, 0, 0, 1, 0), (0, 1, 0, 0, 0), (0, 0, 1, 0, 1), (1, 0, 0, 0, 0), (0, 0, 1, 0, 0),), 0, 0)
<<< 1

but when I try to run my code via run and check:

AssertionError: 2nd example
 <module>, 133

It also gives me an answer of 4.

Below is my code if you need it:

HTTP_USER_AGENT:

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0

hasher = 0


def call_upper_left(grid, row, col):
    global hasher
    if (grid[row - 1][col -1] == 1):
        hasher +=1

def call_upper_mid(grid, row, col):
    global hasher
    if (grid[row - 1][col] == 1):
        hasher += 1

def call_upper_right(grid, row, col):
    global hasher
    if (grid[row - 1][col + 1] == 1):
        hasher += 1

def call_left(grid, row, col):
    global hasher
    if (grid[row][col -1] == 1):
       hasher += 1

def call_right(grid, row, col):
    global hasher
    if (grid[row][col + 1] == 1):
        hasher += 1

def call_lower_left(grid, row, col):
    global hasher
    if (grid[row + 1][col -1] == 1):
        hasher += 1

def call_lower_mid(grid, row, col):
    global hasher
    if (grid[row + 1][col] == 1):
        hasher += 1

def call_lower_right(grid, row, col):
    global hasher
    if (grid[row + 1][col + 1] == 1):
       hasher += 1



def count_neighbours(grid, row, col):
    global hasher

    # determine x and y position
        #start with corners
            #corner upper left
    if (row == 0 and col == 0):
        call_right(grid, row, col)
        call_lower_mid(grid, row, col)
        call_lower_right(grid, row, col)
        return hasher
            #corner upper right
    elif(row == 0 and col == len(grid) - 1):
        call_left(grid, row, col)
        call_lower_left(grid, row, col)
        call_lower_mid(grid, row, col)
        return hasher
            #corner lower left
    elif(row == len(grid) - 1 and col == 0):
        call_upper_mid(grid, row, col)
        call_upper_right(grid, row, col)
        call_right(grid, row, col)
        return hasher
            #corner lower right
    elif(row == len(grid) - 1 and col == len(grid) - 1):
        call_upper_left(grid, row, col)
        call_upper_mid(grid, row, col)
        call_left(grid, row, col)
        return hasher
        #go for the sides
            #left
    elif(row != 0 or row != len(grid) - 1)and(col==0):
        call_upper_mid(grid, row, col)
        call_upper_right(grid, row, col)
        call_right(grid, row, col)
        call_lower_mid(grid, row, col)
        call_lower_right(grid, row, col)
        return hasher
            #right
    elif(row != 0 or row != len(grid) - 1) and (col == len(grid) - 1 ):
        call_upper_left(grid, row, col)
        call_upper_mid(grid, row, col)
        call_left(grid, row, col)
        call_lower_left(grid, row, col)
        call_lower_mid(grid, row, col)
        return hasher
            #aim for the top
    elif (row == 0) and (col != 0 or col != len(grid) - 1):
        call_left(grid, row, col)
        call_right(grid, row, col)
        call_lower_left(grid, row, col)
        call_lower_mid(grid, row, col)
        call_lower_right(grid, row, col)
        return hasher
            #and kamikaze to rock bottom
    elif (row == len(grid) - 1) and (col != 0 or col != len(grid) - 1):
        call_upper_left(grid, row, col)
        call_upper_mid(grid, row, col)
        call_upper_right(grid, row, col)
        call_left(grid, row, col)
        call_right(grid, row, col)
        return hasher
            #and go all out
    else:
        call_upper_left(grid, row, col)
        call_upper_mid(grid, row, col)
        call_upper_right(grid, row, col)
        call_left(grid, row, col)
        call_right(grid, row, col)
        call_lower_left(grid, row, col)
        call_lower_mid(grid, row, col)
        call_lower_right(grid, row, col)
        return hasher