You are going to be given an array of integers. Your job is to take that array and find an index N where the sum of the integers to the left of N is equal to the sum of the integers to the right of N. If there is no index that would make this happen, return `-1`.

__For example:__

Let's say you are given the array `{1,2,3,4,3,2,1}`:  
Your function will return the index `3`, because at the 3rd position of the array, the sum of left side of the index (`{1,2,3}`) and the sum of the right side of the index (`{3,2,1}`) both equal `6`.


Let's look at another one.  
You are given the array `{1,100,50,-51,1,1}`:  
Your function will return the index `1`, because at the 1st position of the array, the sum of left side of the index (`{1}`) and the sum of the right side of the index (`{50,-51,1,1}`) both equal `1`.

Last one:  
You are given the array `{20,10,-80,10,10,15,35}`  
At index 0 the left side is `{}`  
The right side is `{10,-80,10,10,15,35}`  
They both are equal to `0` when added. (Empty arrays are equal to 0 in this problem)  
Index 0 is the place where the left side and right side are equal.  

Note: Please remember that in most programming/scripting languages the index of an array starts at 0.

__Input:__  
An integer array of length `0 < arr < 1000`. The numbers in the array can be any integer positive or negative.

__Output:__  
The lowest index `N` where the side to the left of `N` is equal to the side to the right of `N`. If you do not find an index that fits these rules, then you will return `-1`.

__Note:__  
If you are given an array with multiple answers, return the lowest correct index.

Difficulty: introductory

Starter code:

def find_even_index(arr):
	

Solutions:
def find_even_index(arr):
    for i in range(len(arr)):
        if sum(arr[:i]) == sum(arr[i+1:]):
            return i
    return -1


def find_even_index(lst):
    left_sum = 0
    right_sum = sum(lst)
    for i, a in enumerate(lst):
        right_sum -= a
        if left_sum == right_sum:
            return i
        left_sum += a
    return -1


def find_even_index(lst):
    left_sum = 0
    right_sum = sum(lst)
    for i, a in enumerate(lst):
        right_sum -= a
        if left_sum == right_sum:
            result = i
            break
        left_sum += a
    else:
        result = -1
    return result


def find_even_index(arr):
    left, right = 0, sum(arr)
    for i, e in enumerate(arr):
        right -= e
        if left == right:
            return i
        left += e
    return -1

def find_even_index(arr):
    for i in range(len(arr)):
        if sum(arr[i:]) == sum(arr[:i+1]):
           return i
    return -1

def find_even_index(arr):
    r = [i for i in range(len(arr)) if sum(arr[0:i]) == sum(arr[i+1:])]
    return r[0] if r else -1

def find_even_index(arr):
    right = sum(arr)
    left = 0
    for i,x in enumerate(arr):
        right-=x
        if right==left:
            return i
        left+=x
    return -1

def find_even_index(arr):
    left_sum, right_sum = 0, sum(arr)

    for i, n in enumerate(arr):
        right_sum -= n
        if left_sum == right_sum:
            return i
        left_sum += n

    return -1


find_even_index = lambda arr: next((i for i, __ in enumerate(arr) if sum(arr[:i]) == sum(arr[i+1:])), -1)

def find_even_index(arr):
    def partial_sum(arr):
        total = 0
        for i in arr:
            total += i
            yield total

    sums = list(partial_sum(arr))

    def sumleft(i):
        if i != 0:
            return sums[i-1]
        else:
            return 0

    def sumright(i):
        return sums[len(sums) - 1] - sums[i]

    for i in range(len(arr)):
        sl = sumleft(i)
        sr = sumright(i)
        if sl == sr:
            return i
    return -1

def find_even_index(arr):
    left, right = 0,sum(arr)
    for i,v in enumerate(arr):
        right -= v
        if left == right: return i
        left += v
    return -1