Escreva um programa ou uma função que aceite a lista de saídas de uma função lógica e emita o código LaTeX para sua tabela verdade.
As entradas devem ser rotuladas como letras minúsculas a-z
e a saída deve ser rotulada como F
. O comprimento da lista de entradas sempre será menor que 2^25
, o que significa que o número de entradas sempre será menor que 25; portanto, você pode usar letras do alfabeto minúsculo para nomes de entrada.
Entrada
Um número n
de entradas e uma lista do comprimento 2^n
dos números binários que representam as saídas de uma função lógica.
Resultado
Código LaTeX que produz a tabela verdade para essa função. Os valores de entrada e saída devem ser centralizados em linhas. Deve haver uma linha entre o cabeçalho da tabela e seus valores e entre entradas e saída, portanto, o código deve ser semelhante ao abaixo.
\begin{tabular}{c * <NUMBER OF INPUTS>|c}
<INPUTS>&F\\
\hline
<INPUT VECTOR i>&<OUTPUT>\\
\end{tabular}
Exemplo
Entrada:
2
[0, 0, 0, 1]
Resultado:
\begin{tabular}{cc|c}
a & b & F \\
\hline
0 & 0 & 0 \\
0 & 1 & 0 \\
1 & 0 & 0 \\
1 & 1 & 1 \\
\end{tabular}
Que quando exibido no LaTeX mostra a seguinte tabela verdade
Regras gerais
- Isso é código-golfe , então a resposta mais curta em bytes vence.
- As brechas padrão são proibidas.
ccccc
vez decc
, mas deixe em|c
paz ... E sim, nesta tabela, todos os espaços e novas linhas são opcionais, mas eu evitaria linhas em branco.Respostas:
Carvão , 70 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Salve essa sequência em uma variável para evitar duplicação.
Imprima a
\tabular{*2c|c}
linha inicial (2 ou qualquer valor que a primeira entradaq
tenha).Obtenha as primeiras
q
letras da variável predefinidab
e insira&
s entre elas; em seguida, acrescente&F\\
e imprima\hline
na próxima linha.Faça um loop sobre os caracteres na segunda entrada. Para cada um, seu índice é convertido em binário com comprimento
q
, o caractere é concatenado, o resultado é associado&
a\\
se anexado. As seqüências resultantes são impressas implicitamente em linhas separadas.Imprima o
\endtabular
. (O⁰
é apenas um separador, como o deverbosifier perdoa para inserir a¦
.)fonte
Python 2 , 153 bytes
Experimente online!
Saídas como
\tabular
e\endtabular
são usados como mais curtos\begin{tabular}
e\end{tabular}
, de acordo com esta dica de golfe LaTeX . O*2c
é um atalho para definir 2 colunas.fonte
Haskell,
164155 bytesExperimente online!
Editar: usando em
\tabular
vez de\begin{tabular}
(roubado da resposta do @ xnor ).fonte
Python 2 ,
192168166 bytesExperimente online!
Versão impressa bonita:
Python 2 ,
234229218209205203 bytesExperimente online!
fonte
Próton , 142 bytes
Experimente online!
A saída está no formato LaTeX de golfe; graças ao xnor por esse truque!
Isso deve ser capaz de ser jogado para menos do que a resposta em Python do xnor, porque Proton nunca deveria, em teoria, perder para lol em Python (na prática, eu sou ruim em xD). Posso roubar alguns truques do xnor; PAgora consegui ser mais curto, transformando algumas coisas em variáveis, o que acabei de perceber que o xnor também fazia: P
E lá vamos nós, -6 bytes, usando alguns truques de golfe Proton.
fonte
R ,
196187171 bytesExperimente online!
Saída semelhante à resposta do carvão vegetal .
expand.grid
de esta resposta .Para o registro, o uso
xtable
do pacote eponym não émuitomais curto, pois é necessário especificar muitas opções para corresponder à especificação, além de incluir o pacote:R , 187 bytes
Experimente online!
fonte