Escreva programas com as entradas e saídas abaixo.
Construa uma tabela que liste o conjunto de valores de todas as 256 funções booleanas de três variáveis.
Construa uma tabela que liste o conjunto de valores de todas as 256 funções booleanas de três variáveis.
Passo 1
O enunciado pede um programa que gere a tabela de todas as
funções booleanas de três variáveis. Isso envolve listar as
combinações possíveis de entradas
e, para cada função identificada por um número de
a
, imprimir seus valores de saída para essas entradas.
Passo 2
Geramos primeiro todas as combinações de entrada
. Em Python, isso é feito com compreensão de lista:
Essa lista terá exatamente 8 tuplas, na ordem lexicográfica de
até
.
Passo 3
Cada função booleana corresponde a um número inteiro
de
a
. A representação binária de
em 8 bits dá os valores de saída na ordem em que definimos as entradas: o bit menos significativo (LSB) para
, o próximo para
e assim por diante até o bit mais significativo (MSB) para
. Em Python:
e para obter o valor de saída na linha
(onde
vai de 0 a 7) usamos
porque invertemos a string para alinhar LSB com índice
.
Passo 4
Montamos o cabeçalho da tabela com colunas
,
,
e
até
, e depois imprimimos cada uma das 8 linhas, juntando cada saída das 256 funções. O programa em Python completo fica assim:
combos = [(x, y, z) for x in (0,1) for y in (0,1) for z in (0,1)]
funcoes = [format(f, ‘08b’) for f in range(256)]
header = "x y z " + " “.join(f"f{f}” for f in range(256))
print(header)
for idx, (x, y, z) in enumerate(combos):
combos = [(x, y, z) for x in (0,1) for y in (0,1) for z in (0,1)]
funcoes = [format(f, ‘08b’) for f in range(256)]
header = "x y z " + " “.join(f"f{f}” for f in range(256))
print(header)
for idx, (x, y, z) in enumerate(combos):
monta a sequência de saídas para essa linha
inverte cada string para alinhar LSB no índice 0
saidas = [
[::-1][idx] for
in funcoes]
print(x, y, z, *saidas)
print(x, y, z, *saidas)
if name
“main”:
()
Esse programa produz uma tabela com 8 linhas (para cada \((x,y,z)\)) e 259 colunas (3 de entradas \(+256\) de saídas), listando todas as funções booleanas de três variáveis."]))print(default_api.SolutionSteps(solution_steps=["O enunciado pede um programa que gere a tabela de todas as \(\;2^{2^3}=256\;\) funções booleanas de três variáveis. Isso envolve listar as \(\;2^3=8\;\) combinações possíveis de entradas \((x,y,z)\) e, para cada função identificada por um número de \(0\) a \(255\), imprimir seus valores de saída para essas entradas.",
Resposta
def \(gerar_tabela_funcoes_3vars\)():