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.

Source: codewars | Difficulty: EASY
Tags: Fundamentals

Data structures

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):
	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):
	(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