GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125

Iniciado por yolanda10, 23 Septiembre 2013, 22:33 PM

0 Miembros y 1 Visitante están viendo este tema.

Shell Root

No se te tiene que ocurrir nada, AHI LO TIENES!, ajjaja
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

MCKSys Argentina

#11
Cita de: yolanda10 en 24 Septiembre 2013, 21:24 PM
No se me ocurre como hacer el código para que cumpla con lo solicitado en el algoritmo, me pueden ayudar con el código

Bueno, yo sigo la regla del foro: no se hacen tareas. Por esto no te daré el codigo para que copies y pegues.

Necesitas hacerlo por ti mismo/a, sino NUNCA aprenderas.

Algunos tips:

Debes declarar las variables usadas y cerrar los for's.

Los resultados correctos (lo que cumplen el requisito) saldran en la ventana de debug (inmediato) si reemplazas el print por debug.print.

Podrias colocar todo el codigo en el evento click de un boton (por dar un ejemplo).

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Ahorsa

Yo pude resolverlo en Python (cambie las características del programa) solo que, hay algunos errores que no logro imaginar la solución.

Código (python) [Seleccionar]

n=0;
for a in range(0,6):
for b in range(0,6):
 for c in range(0,6):
if (a!=b!=c):
if ((a+b+c)==2):
print(a,b,c);
n+=1

print ("Se han encontrado:",n,"maneras posibles de encontrar la suma")


Este solo calcula A+B+C = 2
Pero en si el programa arroja:

0 2 0
1 0 1
Se han encontrado 2 maneras posibles de encontrar la suma


cuando en realidad existen mas maneras por ejemplo:
1,1,0
2,0,0
0,0,2; etc.
¿Tendré que mover los fors para que cada uno tenga su orden de principio a fin?
Saludos!
Edito: Creo que viéndolo bien, tengo mal el concepto inicial.

yolanda10

Gracias, pero estas considerando el 0 y el rango es del 1 al 40. Agradecería si me ayudas con el código para que cumpla con lo solicitado en el algoritmo

arts

Yo lo he realizado en Java, aunque tendrías que ver si te vale que se repitan los números en diferente orden.

Código (java) [Seleccionar]
package PackPrimerDia;

public class PrimerDia {
public static void main (String[] args){
int x = 0;
for (int c_1=1;c_1<=36;c_1++){
for (int c_2=1;c_2<=37;c_2++){
for (int c_3=1;c_3<=38;c_3++){
for (int c_4=1;c_4<=39;c_4++){
for (int c_5=1;c_5<=40;c_5++){
if (c_1+c_2+c_3+c_4+c_5 == 125){
x++;
System.out.println("Combinacion Nº: "+x +"  "+c_1+" "+c_2+" " +c_3+" " +c_4+" " +c_5);
}
}
}
}
}
}
}


}

yolanda10

Gracias por tu aporte lo he probado pero genera repetición aunque en diferente orden, aumenta mucho el número de la lista

arts

La otra forma que es la que no me gustaría tener que hacerla, es la de guardar en un array bidimensional de a saber cuantas filas y 6columnas, cada una de las lineas generadas se comprueba primero que no se encuentren en el array y una vez comprobado que no se encuentra la guardo como válida,sim embargo no me gusta porque me parece fatal optimizado el algoritmo, tardará 4 veces mas en generarlo, aunque si que no se repetiría ningún nº.

MCKSys Argentina

#17
En python:

Código (python) [Seleccionar]

def main():
    cuenta=0
    for i in range(1,36):
      for j in range(i+1,37):
        for k in range(j+1 , 38):
          for l in range(k+1 , 39):
            for m in range(l+1 , 40):
              for n in range(m+1 , 41):
                if i+j+k+l+m+n == 125:
                  print str(i) + " + " + str(j) + " + " + str(k) + " + " + str(l) + " + " + str(m) + " + " + str(n) + " = 125"
                  cuenta += 1
    print 'Total: %s' %cuenta

if __name__ == '__main__':
    main()


Imprime un total de 56363 combinaciones posibles.

Saludos!

PD: Segun el enunciado, los que no deben repetirse son los 6 números de la suma.
Las combinaciones posibles pueden repetir los números en diferentes posiciones, siempre y cuando no repitan números en la misma suma.
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


arts

Joooder si se me permite la expresión, acabo de ver tu código y me parece increible, y ¿ dices que es lo primero que se te ocurre a bote pronto ? XD, que bueno.

BlackZeroX

#19
Aplica el concepto de divide y vencerás... es posible que se agilice...

Dulces Lunas!¡.
The Dark Shadow is my passion.