Marchew , 77 51 bajtów
<th>A^*$v<tr>vl+(^h)*($^F- 1)A"h"S"d"h+(^l)v<table>
(Pracując nad tym, odkryłem błąd, który hnie działa i naprawiłem go)
Otworzył niektóre bajty, skracając html, a także używając opcji „podziel, połącz” zamiast „zamień”
Wypróbuj online! , użyj opcji wiersza polecenia-d aby wyświetlić AST (Uwaga: używa to nowego interpretera węzłów, więc starsza wersja na stronie nie może tego uruchomić).
Ten program pobiera indeksowane wejście 0 w odwrotnej kolejności, z powodu dziwnej natury Marchewki, w ten sposób 3 2drukując tabelę 3 × 4.
Uruchom program w ten sposób, ./carrot -f prog.carrot input.txt
Zasadniczo tworzy wiersz nagłówka, a następnie wiersze danych w innej komórce ogrodu (taśma 2D) i łączy je razem.
Marchew działa na taśmie 2D, zwanej ogrodem. Każda komórka w ogrodzie składa się z trzech trybów stosu: ciąg, pływak, tablica. Dla każdego trybu istnieje wartość, zwana „stosem” (uwaga: błędna nazwa). Te stosy zaczynają się puste. Gdy komórka znajduje się w określonym trybie, następujące polecenia wpłyną na stos, który odpowiada temu trybowi, na przykład w trybie zmiennoprzecinkowym operacje wpłyną na zmiennoprzecinkowe stosu. I oczywiście są polecenia do przełączania między trybami. Tryby są ważne, ponieważ każdy operator może być przeciążony dla każdego trybu i każdego typu argumentu.
Ponadto istnieją dwa dodatkowe tryby (wpływają tylko na polecenia, a nie na stos bezpośrednio), tryb normalny i tryb karetki. Tryb normalny działa normalnie, gdy operatorzy przyjmują argumenty i wpływają bezpośrednio na stos. W trybie karetki (prawie) każdy znak jest interpretowany dosłownie jako ciąg znaków, a następnie jest dodawany / dodawany odpowiednio do stosu. Tryb Caret jest uruchamiany / kończony za pomocą karetek (dołączanie) lub kuracji opadających (dołączanie).
Marchew zaczyna się w celi w ogrodzie, w trybie strun i w trybie karetki.
Począwszy od trybu karetki ciąg <th>Ajest dodawany do początkowo pustego ciągu stosu. Następnie następuje *polecenie, które go powiela $, dane wejściowe, czasy. Następnie <tr>jest dodawany do łańcucha stosu za pomocą znaku dolnego v. Spowoduje to utworzenie wiersza nagłówka tabeli.
Aby utworzyć wiersze danych, duplikujemy nagłówek do innej komórki. lprzenosi adres IP do pustej prawej komórki i +dołącza (^h)ciąg do komórki po lewej stronie (zasadniczo kopiując go do komórki po prawej). ()uruchamia podpowłokę, nowy program Marchewki z prawie taką samą taśmą, i ^wychodzi z trybu karetki, abyśmy mogli hpobrać ciąg z lewej komórki. Jest to następnie *duplikowane przez ($^F- 1)kolejne wejście minus 1 razy.
Nadal w prawej komórce Austawia tablicę tej komórki na układanie stosów podzielone przez "h". Słączy tablicę stosu przez "d"i ustawia ciąg stosu na tę wartość. A"h"S"d"tak naprawdę po prostu zamienia hs na ds, aby utworzyć wiersze danych. Teraz hprzechodzimy do lewej komórki początkowej.
Teraz dołączamy ciąg stosu komórki po prawej stronie do tej komórki za pomocą +(^l). Wystarczy dodać <table>tag, więc robimy to, vprzygotowując go.