lunes, 7 de octubre de 2013

Euler tenemos un problema



Hola, me acabo de encontrar un problemilla que emplea iteradores de una manera fácil y sobre todo ahorra mucho código


En concreto es este

Description:
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.
Finish the solution so that it returns the sum of all the multiples of 3 or 5 below the number passed in

Descripcion:
 Si listamos todos los números naturales menores a 10 que son de 3 o 5, obtenemos 3,5,6 y 9. La suma de estos múltiplos es 23.
Termina la solución para que devuelva a suma de los múltiplos de 3 y 5 menores a un numero dado.

Mi solución fue esta

def solution(number)
  mul = (1...number).select { |n| n % 3 == 0 or n % 5 == 0}
  mul.inject(:+)
end


Y eso es todo, en otro lenguaje como C y sus derivados me hubiese llevado muchas mas lineas, no lo creen?

Este y otros problemas están disponibles en Project Euler, de que otra forma se les ocurre resolverlo? hubiese dejado todo en una sola linea pero  me parecía que podría volverse ilegible, ustedes que piensan?