Napisz program lub funkcję, która akceptuje listę wyników funkcji logicznej i wyświetla kod LaTeX dla swojej tabeli prawdy.
Dane wejściowe powinny być oznaczone małymi literami a-z
, a dane wyjściowe - F
. Długość listy danych wejściowych zawsze będzie krótsza niż 2^25
, co oznacza, że liczba danych wejściowych zawsze będzie mniejsza niż 25, więc możesz używać liter z małych liter alfabetu do nazw danych wejściowych.
Wejście
Liczba n
danych wejściowych i lista długości 2^n
liczb binarnych reprezentujących dane wyjściowe funkcji logicznej.
Wynik
Kod LaTeX, który tworzy tabelę prawdy dla tej funkcji. Wartości wejściowe i wyjściowe powinny być wyśrodkowane w rzędach. Między nagłówkiem tabeli a jej wartościami oraz między danymi wejściowymi i wyjściowymi musi znajdować się linia, więc kod powinien być podobny do poniższego.
\begin{tabular}{c * <NUMBER OF INPUTS>|c}
<INPUTS>&F\\
\hline
<INPUT VECTOR i>&<OUTPUT>\\
\end{tabular}
Przykład
Wejście:
2
[0, 0, 0, 1]
Wynik:
\begin{tabular}{cc|c}
a & b & F \\
\hline
0 & 0 & 0 \\
0 & 1 & 0 \\
1 & 0 & 0 \\
1 & 1 & 1 \\
\end{tabular}
Które wyświetlane w LaTeX pokazują następującą tabelę prawdy
Główne zasady
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
- Domyślne luki są zabronione.
ccccc
zamiast zamiastcc
, ale zostaw w|c
spokoju ... I tak, w tej tabeli wszystkie spacje i znaki nowej linii są opcjonalne, ale unikałbym pustych linii.Odpowiedzi:
Węgiel drzewny , 70 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Zapisz ten ciąg w zmiennej, aby uniknąć powielania.
Wydrukuj
\tabular{*2c|c}
wiersz początkowy (2 lub dowolną wartość, którąq
ma pierwsze wejście ).Pobierz pierwsze
q
litery ze wstępnie zdefiniowanej zmiennejb
i wstaw&
je między nimi, a następnie dodaj,&F\\
a także wydrukuj\hline
w następnym wierszu.Pętla nad znakami na drugim wejściu. Dla każdego z nich jego indeks jest konwertowany na dwójkowy o długości
q
, znak jest konkatenowany, wynik jest łączony&
si i\\
jest dołączany. Powstałe ciągi są domyślnie drukowane na osobnych wierszach.Wydrukuj
\endtabular
. (Jest⁰
to tylko separator, ponieważ deverbosifier zapomniał wstawić a¦
.)źródło
Python 2 , 153 bajty
Wypróbuj online!
Wyjścia jak
\tabular
i\endtabular
są używane jako krótsze\begin{tabular}
i\end{tabular}
, zgodnie z tą wskazówką golfową LaTeX .*2c
Jest skrótem do zdefiniowania 2 kolumny.źródło
Haskell,
164155 bajtówWypróbuj online!
Edycja: za pomocą
\tabular
zamiast\begin{tabular}
(skradziony z odpowiedzi @ xnor ).źródło
Python 2 ,
192168166 bajtówWypróbuj online!
Wersja dość drukowana:
Python 2 ,
234229218209205203 bajtówWypróbuj online!
źródło
Proton , 142 bajty
Wypróbuj online!
Dane wyjściowe są w postaci golfa LaTeX; dzięki xnor za tę sztuczkę!
To powinno być w stanie grać w golfa krótszą niż odpowiedź xnora na Python, ponieważ Proton teoretycznie nigdy nie powinien przegrać z Python lol (w praktyce jestem zły xD). Mogę ukraść niektóre sztuczki z Xnora; PUdało mi się teraz być krótszym, zmieniając niektóre rzeczy w zmienne, co właśnie zauważyłem, że xnor też: P
I proszę, -6 bajtów, używając kilku sztuczek golfowych Proton.
źródło
R ,
196 187171 bajtówWypróbuj online!
Wyjście podobne do odpowiedzi na węgiel drzewny .
expand.grid
z tej odpowiedzi .Dla przypomnienia, korzystanie
xtable
z pakietu eponimowego nie jestdużokrótsze, ponieważ oprócz określenia pakietu należy podać wiele opcji, aby dopasować specyfikację:R 187 bajtów
Wypróbuj online!
źródło