Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
It's very complex :))) solution in Creative category for Area of a Convex Polygon by veghadam1991
def checkio(data):
p0 = data[0]
sum_area = 0
for i in range(len(data)-2):
v1 = data[i+1][0] - p0[0] + (data[i+1][1] - p0[1])*1j
v2 = data[i+2][0] - p0[0] + (data[i+2][1] - p0[1])*1j
slice_area = abs(v1.real * v2.imag - v1.imag * v2.real) / 2
sum_area += slice_area
return sum_area
if __name__ == '__main__':
#This part is using only for self-checking and not necessary for auto-testing
def almost_equal(checked, correct, significant_digits=1):
precision = 0.1 ** significant_digits
return correct - precision < checked < correct + precision
assert almost_equal(checkio([[1, 1], [9, 9], [9, 1]]), 32), "The half of the square"
assert almost_equal(checkio([[4, 10], [7, 1], [1, 4]]), 22.5), "Triangle"
assert almost_equal(checkio([[1, 2], [3, 8], [9, 8], [7, 1]]), 40), "Quadrilateral"
assert almost_equal(checkio([[3, 3], [2, 7], [5, 9], [8, 7], [7, 3]]), 26), "Pentagon"
assert almost_equal(checkio([[7, 2], [3, 2], [1, 5], [3, 9], [7, 9], [9, 6]]), 42), "Hexagon"
assert almost_equal(checkio([[4, 1], [3, 4], [3, 7], [4, 8], [7, 9], [9, 6], [7, 1]]), 35.5), "Heptagon"
Dec. 21, 2015
Comments: