Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: PalitroqueZ en 1 Enero 2017, 18:50 pm



Título: calcular numero de iteraciones no repetitivas en rango de celdas
Publicado por: PalitroqueZ en 1 Enero 2017, 18:50 pm
Quiero implementar un algoritmo para buscar combinaciones de celdas con numeros que se repiten,

supongamos que tenemos 2 grupos de 4 celdas y las celdas son rellenadas con numeros generados de forma aleatoria del 1 al 12

la idea es comparar el grupo 1 con el grupo 2 y determinar si hay numeros repetidos,

pero para poder decir que el grupo está repetido, deben existir los mismos numeros en ambos grupos (sin importar el orden), explicado en forma gráfica seria asi

(https://s23.postimg.org/5hv0zliyj/explicacion.jpg)


desde luego que al aumentar el numero de grupos, aumentará el número de iteraciones para comprobar un grupo con otro,

ejemplo, si tenemos 3 grupos de 4 celdas rellenados con numeros aleatorios del 1 al 12 y yo necesito saber si hay grupos repetidos, entonces mi secuencia definitiva de comprobación seria la siguiente

comprobar:

grupo1 con grupo2
grupo1 con grupo3
grupo2 con grupo3

noten que la combinación total de comprobaciones serían 6 y estoy omitiendo 3 debido a que sería una redundancia, las comprobaciones redundantes serian:

grupo2 con grupo1
grupo3 con grupo2
grupo3 con grupo1

las redundancias es la que trato de no calcular para no sobrecargar el algoritmo y que el programa tome más tiempo del estimado.

la tabla completa de lo que intento explicar seria la siguiente

(https://s27.postimg.org/b2rcwkoqb/patron.jpg)

allí se notan varios patrones, pero no logro calcular el numero de iteraciones en base al numero de grupos, porque en tal caso sería mi N final que incluiría en el primer bucle for

Código:
for t=1 to iTotalIteraciones
...
...

¿no existe una función matematica en probabilidad que describa esta secuencia?

en google escribo combinaciones y permutaciones, pero salen son formulas que incluyen el total de combinaciones.




Título: Re: calcular numero de iteraciones no repetitivas en rango de celdas
Publicado por: PalitroqueZ en 1 Enero 2017, 20:36 pm
yo mismo me respondo,

en base a los patrones observados en la segunda imágen se puede apreciar 3 cosas

- el número de iteraciones de la izquierda (llamemoslo variable i) empezará siempre en 1 y se irá incrementando hasta total _grupos_ceda -1

- el número de iteraciones de la derecha (llamemoslo variable d) empezará siempre en 2 y se irá incrementando hasta total _grupos_ceda

- i siempre será menor que d

entonces el algoritmo que cumple el patrón señalado sería el siguiente:

Código:
- declarar i como entero
- declarar d como entero
- i = 1
- d = 2
mientras i < iGruposCeldas
    mientras d <= iGruposCeldas
        si d > i entonces
          // funcion_comprobar_grupos_celdas(i,d)
        d = d + 1
    continuar
    d = 2
    i = i + 1
continuar