Schreiben Sie ein Programm oder eine Funktion, die die Liste der Ausgaben einer Logikfunktion akzeptiert und den LaTeX-Code für ihre Wahrheitstabelle ausgibt.
Die Eingaben sollten als Kleinbuchstaben a-z
und die Ausgabe als gekennzeichnet sein F
. Die Länge der Liste der Eingaben ist immer kürzer als 2^25
, was bedeutet, dass die Anzahl der Eingaben immer weniger als 25 beträgt, sodass Sie für Eingabenamen Buchstaben aus dem Kleinbuchstaben verwenden können.
Eingang
Eine Anzahl n
von Eingaben und eine Liste der Länge 2^n
von Binärzahlen, die die Ausgaben einer logischen Funktion darstellt.
Ausgabe
LaTeX-Code, der die Wahrheitstabelle für diese Funktion erstellt. Eingabe- und Ausgabewerte sollten in Zeilen zentriert sein. Zwischen dem Tabellenkopf und seinen Werten sowie zwischen Ein- und Ausgängen muss eine Zeile stehen, daher sollte der Code dem folgenden ähnlich sein.
\begin{tabular}{c * <NUMBER OF INPUTS>|c}
<INPUTS>&F\\
\hline
<INPUT VECTOR i>&<OUTPUT>\\
\end{tabular}
Beispiel
Eingang:
2
[0, 0, 0, 1]
Ausgabe:
\begin{tabular}{cc|c}
a & b & F \\
\hline
0 & 0 & 0 \\
0 & 1 & 0 \\
1 & 0 & 0 \\
1 & 1 & 1 \\
\end{tabular}
Was in LaTeX angezeigt wird, zeigt die folgende Wahrheitstabelle
Allgemeine Regeln
- Dies ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
- Standardschlupflöcher sind verboten.
ccccc
stattcc
, aber in|c
Ruhe lassen ... Und ja, in dieser Tabelle sind alle Leerzeichen und Zeilenumbrüche optional, aber ich würde Leerzeilen vermeiden.Antworten:
Holzkohle , 70 Bytes
Probieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Erläuterung:
Speichern Sie diese Zeichenfolge in einer Variablen, um Doppelungen zu vermeiden.
Drucken Sie die erste
\tabular{*2c|c}
Zeile (2 oder einen beliebigen Wert, den die erste Eingabeq
hat).Holen Sie sich die ersten
q
Buchstaben aus der vordefinierten Variablenb
und fügen Sie&
s dazwischen ein. Fügen Sie dann die hinzu&F\\
und drucken Sie\hline
in der nächsten Zeile.Schleife über die Zeichen in der zweiten Eingabe. Für jeden wird sein Index mit seiner Länge in eine Binärdatei konvertiert
q
, das Zeichen wird verkettet, das Ergebnis wird mit&
s verbunden und\\
angehängt. Die resultierenden Zeichenfolgen werden implizit in separaten Zeilen gedruckt.Drucken Sie die
\endtabular
. (Das⁰
ist nur ein Trennzeichen, da der Deverbosifier vergisst, a einzufügen¦
.)quelle
Python 2 , 153 Bytes
Probieren Sie es online aus!
Ausgänge wie
\tabular
und\endtabular
werden als kürzer\begin{tabular}
und\end{tabular}
gemäß diesem LaTeX-Golftipp verwendet . Das*2c
ist eine Abkürzung zum Definieren von 2 Spalten.quelle
Haskell,
164155 BytesProbieren Sie es online aus!
Bearbeiten: Verwenden
\tabular
statt\begin{tabular}
(gestohlen aus der Antwort von @ xnor ).quelle
Python 2 ,
192168166 BytesProbieren Sie es online aus!
Hübsche gedruckte Version:
Python 2 ,
234229218209205203 BytesProbieren Sie es online aus!
quelle
Proton , 142 Bytes
Probieren Sie es online aus!
Die Ausgabe erfolgt in Golf-LaTeX-Form. danke an xnor für diesen trick!
Dies sollte in der Lage sein, kürzer als die Python-Antwort von xnor zu spielen, da Proton theoretisch niemals gegen Python lol verlieren sollte (in der Praxis bin ich schlecht xD). Ich kann xnor einige Tricks stehlen; P.Es ist mir gelungen, jetzt kürzer zu werden, indem einige Dinge zu Variablen gemacht wurden, was mir gerade aufgefallen ist. Xnor hat es auch getan: P.
Und los geht's, -6 Bytes mit einigen Proton-Golf-Tricks.
quelle
R ,
196 187171 BytesProbieren Sie es online aus!
Ausgabe ähnlich der Antwort von Charcoal .
expand.grid
aus dieser Antwort .Für die Aufzeichnung ist die Verwendung
xtable
aus dem Eponym-Paket nichtvielkürzer, da neben dem Einschließen des Pakets viele Optionen angegeben werden müssen, die der Spezifikation entsprechen:R , 187 Bytes
Probieren Sie es online aus!
quelle