Foro de elhacker.net

Programación => Java => Mensaje iniciado por: JonaLamper en 17 Noviembre 2017, 00:59 am



Título: Generar una tabla de verdad
Publicado por: JonaLamper en 17 Noviembre 2017, 00:59 am
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


Título: Re: Generar una tabla de verdad
Publicado por: ivancea96 en 17 Noviembre 2017, 16:17 pm
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.


Título: Re: Generar una tabla de verdad
Publicado por: Serapis en 17 Noviembre 2017, 21:31 pm
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.

Código:
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


Título: Re: Generar una tabla de verdad
Publicado por: JonaLamper en 10 Enero 2018, 19:54 pm
Hum... no consigo ver claro el código, NEBIRE.


Título: Re: Generar una tabla de verdad
Publicado por: Serapis en 11 Enero 2018, 15:01 pm
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).