Escriba un programa o una función que acepte la lista de resultados de una función lógica y genere el código LaTeX para su tabla de verdad.
Las entradas deben etiquetarse como letras minúsculas a-z
, y la salida debe etiquetarse como F
. La longitud de la lista de entradas siempre será menor que 2^25
, lo que significa que el número de entradas siempre será menor que 25, por lo que puede usar letras del alfabeto en minúsculas para los nombres de entrada.
Entrada
Un número n
de entradas y una lista de longitud 2^n
de números binarios que representa las salidas de una función lógica.
Salida
Código LaTeX que produce la tabla de verdad para esa función. Los valores de entrada y salida deben centrarse en filas. Debe haber una línea entre el encabezado de la tabla y sus valores y entre las entradas y las salidas, por lo que el código debe ser similar al siguiente.
\begin{tabular}{c * <NUMBER OF INPUTS>|c}
<INPUTS>&F\\
\hline
<INPUT VECTOR i>&<OUTPUT>\\
\end{tabular}
Ejemplo
Entrada:
2
[0, 0, 0, 1]
Salida:
\begin{tabular}{cc|c}
a & b & F \\
\hline
0 & 0 & 0 \\
0 & 1 & 0 \\
1 & 0 & 0 \\
1 & 1 & 1 \\
\end{tabular}
Que cuando se muestra en LaTeX muestra la siguiente tabla de verdad
Reglas generales
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
- Las lagunas predeterminadas están prohibidas.
ccccc
lugar decc
, pero dejar|c
solo ... Y sí, en esta tabla, todos los espacios y las nuevas líneas son opcionales, pero evitaría las líneas en blanco.Respuestas:
Carbón de leña , 70 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Guarde esta cadena en una variable para evitar la duplicación.
Imprima la
\tabular{*2c|c}
línea inicial (2 o cualquier valor queq
tenga la primera entrada ).Obtenga las primeras
q
letras de la variable predefinidab
e inserte&
s entre ellas, luego agregue&F\\
y también imprima\hline
en la siguiente línea.Recorre los caracteres en la segunda entrada. Para cada uno, su índice se convierte a binario con longitud
q
, el carácter se concatena, el resultado se une con&
sy\\
se agrega. Las cadenas resultantes se imprimen implícitamente en líneas separadas.Imprime el
\endtabular
. (El⁰
es solo un separador ya que el desverbosificador no se inserta a¦
).fuente
Python 2 , 153 bytes
Pruébalo en línea!
Salidas como
\tabular
y\endtabular
se usan como más cortos\begin{tabular}
y\end{tabular}
, según este consejo de golf de LaTeX . El*2c
es una abreviatura para definir 2 columnas.fuente
Haskell,
164155bytesPruébalo en línea!
Editar: usando en
\tabular
lugar de\begin{tabular}
(robado de la respuesta de @ xnor ).fuente
Python 2 ,
192168166 bytesPruébalo en línea!
Versión bastante impresa:
Python 2 ,
234229218209205203 bytesPruébalo en línea!
fuente
Protón , 142 bytes
Pruébalo en línea!
La salida está en forma de Golf LaTeX; gracias a xnor por ese truco!
Esto debería poder jugarse más corto que la respuesta de Python de xnor porque Proton en teoría nunca debería perder ante Python lol (en la práctica, soy malo xD). Puedo robarle algunos trucos a xnor; PSe las arregló para que ahora sea más corto al convertir algunas cosas en variables, lo que acabo de notar que xnor también hizo: P
Y ahí vamos, -6 bytes usando algunos trucos de golf Proton.
fuente
R ,
196187171bytesPruébalo en línea!
Salida similar a la respuesta de carbón .
expand.grid
a partir de esta respuesta .Para el registro, el uso
xtable
del paquete de epónimo no esmuchomás corto ya que uno tiene que especificar muchas opciones para que coincida con la especificación, además de incluir el paquete:R , 187 bytes
Pruébalo en línea!
fuente