Muy buenas noches,
He estado buscando algunos ejemplos sobre esto, pero ninguno me convence. A ver si a alguien se le ocurre alguna forma "elegante" de hacerlo.
Lo que pretendo es generar una tabla de verdad. Imaginemos una tabla de verdad de 3 variables, sería así:
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Ahora bien, cada fila de esas para mí va a ser un array. Es decir que yo tendría 8 arrays con esas 8 combinaciones. Luego, ¿cómo hago un programa que dadas n variables me genere todos los arrays posibles, es decir, 2^n arrays?
Muchísimas gracias! ;D
Fíjate en una de las columnas. ¿Cada cuánto cambia el número? En la segunda, cada 2 valores, cambia.
Si puedes hacerlo para 1 columna, puedes hacerlo para cualquiera o para una tabla completa.
Es más sencillo.
Cada fila es un número que va desde 0 hasta 2^n-1
para tres variables (n=3, son 8 combinaciones, que van del 000, al 111)
Si llenas un array con los valores 0 a 255, tienes lo que quieres con 8 'variables', Si precisas verlo en formato binario, pásalo a texto. Aquí un ejemplo en pseudocodigo.
array de string = Funcion Binario2alaN(entero n)
entero j, k, v
string vBin
array de string ArrayBin(0 a (2^n)-1))
bucle para k desde 0 a (2^n)-1))
v = k
bucle para j desde 0 a n-1
vbin = (v and 1).ToString concatenadodelantede vbin
v = (v\2)
fin bucle
ArrayBin(k)= vBin
vBin = ""
devolver ArrayBin
Fin bucle
Hum... no consigo ver claro el código, NEBIRE.
Te decía que los números del 0-7 (para 3bits) ó 0-225 (para 8 bits), así en orden... ya mantienen esa estructura de bits que quieres.
...y que si quieres verlo con caracteres binarios (en texto), puedes usar un bucle externo (0-7; 0-255) para convertir cada número en un texto binario (el bucle interno, se usa para recorree los bits de cada número).