Suma de segmentos X58295


Statement
 

pdf   zip

html

Diseñad una función suma_seg(f, n) que dada una lista f de números y un entero no negativo n retorna un booleano y un entero. El booleano será True cuando alguna suma de un segmento inicial de f supera a n. En este caso el entero a devolver será la posición más pequeña que define un segmento inicial con esta propiedad. Cuando las sumas de todos los segmentos iniciales no superan a n la función devolverá el booleano False y el entero −1.

Para la lista f= [1, −2, 3, 4, 5, 6] y n = 10, el segmento inicial definido por la cuarta posición tiene como suma 1 − 2 + 3 + 4 + 5 = 11 y no es posible elegir una posición anterior a esta cuya suma supere a n. En este caso el resultado de la función será (True, 4)

Sample session
>>> suma_seg([1, -2, 3, 4, 5, 6], 10)
(True, 4)
>>> suma_seg([1, 3, 1, -2, 0, 1], 12)
(False, -1)
>>> suma_seg([1, -1], 1)
(False, -1)
>>> suma_seg([-1, 1], 0)
(False, -1)
>>> suma_seg([1, -1], 0)
(True, 0)
>>> suma_seg([3],2)
(True, 0)
>>> suma_seg([],0)
(False, -1)
Information
Author
InfBesos
Language
Spanish
Official solutions
Python
User solutions
Python