Poseemos la mejor solución que encontramos en línea. Deseamos que te sea de ayuda y si quieres comentarnos algo que nos pueda ayudar a crecer hazlo con total libertad.
Solución:
Carbón, 70 bytes
≔tabularζζc⸿⪫✂β⁰Iθ¹&⁰&F\⸿hline⸿Eη⁺⪫⁺⮌EIθI﹪÷κX²λ²⟦ι⟧&¦\⁰endζ
¡Pruébelo en línea! El enlace es a la versión detallada del código. Explicación:
≔tabularζ
Guarda esto string en una variable para evitar la duplicación.
ζ*θc⸿
Imprime la inicial tabular*2c
línea (2 o cualquier valor de la primera entrada q
posee).
⪫✂β⁰Iθ¹&⁰&F\⸿hline⸿
Consigue el primero q
letras de la variable predefinida b
e insertar &
s entre ellos, luego agregue el &F\
y también imprimir hline
en la línea siguiente.
Eη⁺⪫⁺⮌EIθI﹪÷κX²λ²⟦ι⟧&¦\
Recorra 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 &
arena \
se adjunta. Las cadenas resultantes se imprimen implícitamente en líneas separadas.
⁰endζ
Imprime el endtabular
. (Los ⁰
es solo un separador ya que el desverbosificador olvidó insertar un ¦
.)
Python 2, 153 bytes
lambda n,l:r'tabularc%s&F\hline%sendtabular'%(n,q(map(chr,range(97,97+n))),r'\'.join(q(bin(2**n+i)[3:]+x)for i,x in enumerate(l)))
q='&'.join
¡Pruébelo en línea!
Salidas como
tabularca&b&F\hline0&0&0\0&1&0\1&0&0\1&1&1endtabular
tabular
y endtabular
se usan como cortos begintabular
y endtabular
, según este consejo de golf de LaTeX. los *2c
es una abreviatura para definir 2 columnas.
Haskell, 164 155 bytes
s%f=((:"&")=<
¡Pruébelo en línea!
unlines -- take a list of strings and join it with NL.
-- the strings are:
"\tabular"++('c'<$[1..n])++"" -- tabular definition with n times 'c'
take n['a'..]%'F' -- table header
"\hline" -- hline
zipWith(%)(mapM id$"01"<$[1..n])r -- table content
["\endtabular"] -- end of tabular definition
Table header and content are built via function '%'
s%f= -- take a string 's' and a char 'f'
((:"&")=<
Editar: usando tabular
en vez de begintabular
(robado de la respuesta de @xnor).