Suma de segmentos X58295


Statement
 

pdf   zip

Diseñad una función @suma_seg(f, n)@ que dada una lista ff de números y un entero no negativo nn retorna un booleano y un entero. El booleano será @True@ cuando alguna suma de un segmento inicial de ff supera a nn. 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 nn la función devolverá el booleano @False@ y el entero 1-1.

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

Ejemplo de sessión

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