Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Humpty Dumpty Form by Kurush
import math
def checkio(height, width):
c = height / 2.0
a = width / 2.0
V = (4 * math.pi / 3) * a ** 2 * c
if c < a: # oblate spheroid
e = math.sqrt(1 - c ** 2 / a ** 2)
S = 2 * math.pi * a ** 2 * (1 + (1 - e ** 2)/e * math.atanh(e))
elif c > a: # prolate spheroid
e = math.sqrt(1 - a ** 2 / c ** 2)
S = 2 * math.pi * a ** 2 * (1 + c/(a * e) * math.asin(e))
else: # sphere
S = 4 * math.pi * a ** 2
return [round(V, 2), round(S, 2)]
#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
assert checkio(4, 2) == [8.38, 21.48], "Prolate spheroid"
assert checkio(2, 2) == [4.19, 12.57], "Sphere"
assert checkio(2, 4) == [16.76, 34.69], "Oblate spheroid"
June 24, 2014