El lun., 3 sept. 2018 a las 21:12, AGTUGO (<agt...@gmail.com>) escribió:
> """ > Problema tomado de > https://projecteuler.net/problem=1 > > > If we list all the natural numbers below 10 that are multiples > of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. > Find the sum of all the multiples of 3 or 5 below 1000. > > Si listamos todos los numeros naturales menores a 10 que son > múltiplos de 3 o 5 obtenemos 2, 5, 6 y 9. La suma de los múltiplos es 23. > Encuentra la suma de los múltiplos de 3 o 5 menores de 1000. > > > """ > > """ > Este es mi aporte de código no esta diseñado para ser eficiente, > el objetivo es jugar con el lenguaje. Ojalá puedan compartir > una visión interesante de como resolver este problema. > Si tienen una forma más eficiente de hacer el set o más elegante también > es bienvenido. > Saludos. > """ > > import itertools > begin = 0 > end = 1000 > multiples= (3,5) > > x = [range(begin,end,i) for i in multiples] > x = sum(set(itertools.chain(*x))) > > print(x) > > Con este tipo de retos, es interesante que sea lo más simple posible. En el enunciado sólo pide la suma, no es preciso guardar ninguno de los resultados intermedios. Lo más simple sería: def euler001(n: int) -> int: return sum(i for i in range(1, n) if i%3 == 0 or i%5 ==0) ... que es una forma concisa de poner lo que propone agus en otro mensaje. Una forma más efectiva, aunque muy poco "escalable" en caso de que fueran más múltiplos a considerar: def euler001(n: int) -> int: return sum(range(3, n, 3)) + sum(range(5, n, 5)) - sum(range(15, n, 15)) -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": https://blog.ch3m4.org Buscador Python Hispano: http://busca.ch3m4.org <https://blog.ch3m4.org/pages/busqueda-python-es/>
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es