Project Euler Problema 1... : (

Qué vergüenza chicos, pero hoy tuve un poquito de tiempo y recordé que existe “Project Euler”, así que decidí hacer por lo menos los 3 primeros en mi ratito de ocio.
Y resulta que no pude ni con el problema 1:
http://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.
Confió en resolverlo solo pero les comparto mi gran código y si me soplan la respuesta no me enojo : ) ( una simple explicación de la pendejada que estoy cometiendo me ayudaría) Gracias.

/**
 *
 * @author rodrigo.salado
 */

public class Problem1 {

    public boolean isMultiple(int num, int mul) {
        return mul % num == 0 && mul != 0 ? true : false;
    }

    public int solve(int ini, int end, int[] multiples) {
        int sum = 0;
        for (int multiple : multiples) {
            //System.out.println("Multiplo:" + multiple);
            for (int i = ini; i <= end; i++) {
                if (isMultiple(multiple, i)) {
                    sum += i;
                    //System.out.println("MulRes: " + i + " sum:" + sum);
                }
            }
        }
        return sum;
    }
}

        System.out.println(p.solve(0, 999, new int[]{3, 5}));//266333


En la página me dice que nel, que estoy mal : (

Sorry, but the answer you gave appears to be incorrect.

Go back to Problem 1.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Modales...

Se consideran bad manners publicar soluciones a problemas de Project Euler. Cuando logres resolver un problema, se te otorga acceso a un foro al que sólo pueden entrar los que ya resolvieron ese problema, y ahí puedes poner tus soluciones.

Yo estoy resolviendo los problemas con Scala. Pero del problema 1 ni guardé el fuente... ahorita que lo veo, es porque lo resolví en una sola línea, corta además (lo volví a resolver para estar seguro).

Indistintamente de que te haya arrojado un resultado incorrecto, te paso un par de tips para tu programa, y los otros que hagas para resolver los demás problemas:

- No te preocupes por hacer soluciones muy generalizadas (aunque a veces hay algunas funciones que te van a servir para resolver más de un problema, como la de determinar si un número es primo).
- Define bien el dominio del problema. En este caso, es más simple si empiezas en 1 en vez de 0; puedes quitar la condición adicional de isMultiple, que por cierto puedes simplificar bastante porque no necesitas un operador ternario para devolver true si una comparación te da true, o false si te da false... ya tienes ahí el true/false.

Y el error de tu programa es bastante sencillo, nomás falta que lo encuentres...

Si quieres ver la solución en Scala, selecciona este bloque. Para los que quieren resolver el problema, pues mejor no lo vean hasta después de que lo hayan resuelto...

1 until 1000 filter {i=>i%3==0 || i%5==0} sum

ah ahora veo la potencia de

ah ahora veo la potencia de scala, definitivamente tengo que ponerme las pilas con el lenguaje

Imagen de rodrigo salado anaya

@Cocinero de Software

Muchas gracias Maestro Cocinero de Software, por lo consejos y por el tip que si me sirvió.

Imagen de rodrigo salado anaya

@chochos

Aunque ya te agradecí debo aclarar que el pedo no era en mul % num, si no que 3 y 5 compartes varios múltiplos, por ejemplo el 15, entonces yo sumaba dos veces 15 y tantan. Ojala pudiera compartir como me quedo el código al final, pero Nope, no me quedo en una línea jejeje aun así el pedo no era que no supiera usar el lenguaje Java si no que no comprendí la pregunta…

Saludos.

@ryz, @chochos: agárrense que ya llevo el primero jajajaja

Imagen de rodrigo salado anaya

A no maaa..

A no mamn, unos hasta con Assembler lo resovieron... Jajajaja que locos... :D

Lo siento que esto no es tuiter verdad : S.