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;
}
}
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.
- Inicie sesión o regístrese para enviar comentarios
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...
ah ahora veo la potencia de
ah ahora veo la potencia de scala, definitivamente tengo que ponerme las pilas con el lenguaje
@Cocinero de Software
Muchas gracias Maestro Cocinero de Software, por lo consejos y por el tip que si me sirvió.
@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
A no maaa..
A no mamn, unos hasta con
Assembler
lo resovieron... Jajajaja que locos... :DLo siento que esto no es tuiter verdad : S.