CITA(_cirrus_ @ 11/09/2008 21:46)
bueno, mejor tomalo de la forma mas simple, comparando :) asi puede salir cosas interesantes y sabras lo que tienes que hacer...
una pista para la imagen es:
stairway to heaven
buenono es una pista sino dar el nombre de la imagen xDD.
en fin es muy basico el reto.
Te lo voy a decir una sola vez, para la segunda no digo nada, si no entendes con estas simples palabras cuál es mi pregunta, no voy a molestarme en volver a hacerla.
TENGO LOS PIXELES DIFERENTES. Eso quiere decir que ya tengo la imagen original.
Ahora bien, lo ÚNICO que no se, es qué operación aplicar sobre los RGB de la imagen original entre los RGB de la imagen modificada, te la voy a hacer sencilla.
¿Vos querés que compare? Bueno, comparemos:
Si tomo estas operaciones posibles: +, -, ^ (xor), | (or), & (and), % (resto) <-- 6 operaciones posibles.
Y tomo los siguientes elementos a operar: R1, G1, B1, R2, G2, B2 <--- 6 elementos, en donde R1, G1 y B1 son los bytes relacionados al color de un píxel original X, y R2, G2, B2 los bytes relacionados al color del píxel modificado ligado al píxel original X.
Puedo generar 6! (6*5*4*3*2*1) = 720 permutaciones de elementos.
Entre cada elemento puedo poner una operación, eso me da (6 operaciones) ^ (<-- elevado a) 5.. eso da 6^5 = 7776, formando algo de este estilo:
BYTE op BYTE op BYTE op BYTE op BYTE op BYTE
(BYTE = alguno de los bytes de algun color, op = operación).
Ahora bien, la cantidad de combinaciones totales entre permutaciones de elementos y operaciones entre esos elementos es 720 * 7776 = 5,598,720.
Ahora bien, tené en cuenta que NADA MAS tengo 5,000,000 formas de combinar todos esos numeros (R1, G1, B1, R2, G2, B2) con las operaciones que mencioné antes.. y NO SOLO ESO!
Tené en cuenta que ni siquiera agrupé los elementos, también podría haber tomado esta agrupación de elementos y operar sobre cada uno de los términos en este ejemplo:
(BYTE op (BYTE op BYTE) op BYTE) op BYTE op BYTE
o bien hacer esto:
(BYTE op BYTE) op (BYTE op BYTE) op (BYTE op BYTE)
Entonces, con TODAS las agrupaciones posibles, mi programa me dice que existen alrededor de (no recuerdo bien pero creo que eran) 40,000,000,000 de formas de combinar esas variables (R1,G1,B1,R2,G2,B2) y todas las formas de agrupaciones posibles con las 6 operaciones que mencioné antes.
Ahora, la pregunta es, pretendés que me ponga a resolver TODAS las combinaciones, es decir, querés que me arme una lista de las 20,000,000,000 combinaciones que resultan ser en todos los píxeles caracteres imprimibles? o pretendés otra cosa?
Porque lamentablemente existen MUCHISIMAS, y cuando digo MUCHISIMAS me refiero quizás el 50% de combinaciones totales, que son imprimibles, y cuando digo imprimibles me refiero a que en todos los píxeles (en los 10 píxeles diferentes) las operaciones resultan generar caracteres imprimibles.
Ahora, la pregunta es, cuál de las 40,000,000,000 combinaciones tengo que usar?
(R1+G1^B1) - (R2+(G2&B2))??
o tal vez:
(R1|R2)+(G1^G2)+(B1&B2)??
Bueno, no voy a poner en este post todas las combinaciones posibles, pero creo que poniendo esas dos se entiende el punto.
En fin, me dirías tan amablemente qué operaciones hay que usar?
Gracias.