Wejście:
Dwie liczby dziesiętne m
i n
które odpowiednio podać liczbę wierszy i kolumn w tabeli.
m
i n
są większe lub równe 1.
Wyjście:
Tabela w HTML, która ma m wierszy i n kolumn.
Stół powinien być wyświetlany przez wybraną przez ciebie nowoczesną przeglądarkę. Większość przeglądarek wyświetla wszystko poprawnie, nawet jeśli tagi nie są zamknięte. Właściwe wcięcie i odstępy są opcjonalne.
W każdej komórce powinien znajdować się co najmniej jeden znak (spacja).
Komórki w pierwszym wierszu powinny używać <th>
znaczników, a komórki w kolejnych wierszach powinny używać <td>
znaczników.
Warunek wygranej:
To jest golf golfowy, więc wygrywa najkrótszy kod źródłowy dla każdego języka.
Przykład wprowadzania:
2 3
Przykład wyjściowy:
<table>
<tr>
<th>A</th>
<th>A</th>
<th>A</th>
</tr>
<tr>
<td>A</td>
<td>A</td>
<td>A</td>
</tr>
</table>
lub:
<table><tr><th>A<th>A<th>A<tr><td>A<td>A<td>A
code-golf
code-generation
Ziemniak
źródło
źródło
Odpowiedzi:
APL (Dyalog Unicode) z MiServer 3.0 ,
3130 bajtów SBCSPełny program Monituje stdin dla listy dwóch elementów
[m,n]
i wypisuje ścisłe XHTML na standardowe wyjście.Przykładowa sesja:
Wypróbuj online!
Wyjaśnienie:
(
…).Render
Renderuj następujący element HTML:⎕NEW _.Table (
…)
Nowa tabela z następującymi parametrami:(
…) ⍬ 1
Następująca treść, bez specjalnej stylizacji, 1 wiersz nagłówka:⎕⍴0
oceniane wejście zmienia kształt zera (tj. macierz zer m, n-kolumn)źródło
JavaScript (ES6), 70 bajtów
Zaoszczędzono 2 bajty dzięki @RickHitchcock
Pobiera dane wejściowe w składni curry
(m)(n)
.Wypróbuj online!
Próbny
Pokaż fragment kodu
źródło
Python 2 , 57 bajtów
Wypróbuj online! Zakłada, że
m
nie jest zero.źródło
Płótno , 31 bajtów
Wypróbuj tutaj! lub Wypróbuj zobrazowane!
Po naprawieniu 2 błędów (ಠ_ಠ) w interpretatorze działa również 30 bajtów
źródło
JavaScript, 65 bajtów
źródło
05AB1E , 30 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Stax , 28 bajtów
Uruchom i debuguj
Rozpakowane, niepolowane i skomentowane, wygląda to tak.
Uruchom ten
źródło
Java 10,
139133102 bajtówWypróbuj online.
Wyjaśnienie:
źródło
(m,n)->{var l="<tr>";for(;n-->0;)l+="<td>A";var s="<table>"+l.replace('d','h');for(;--m>0;)s+=l;return s;}
(106 bajtów) Znalazłem ten interesujący, ale nie warty, biorąc pod uwagę twój obecny wynik. Prawdopodobnie możesz trochę pograć w golfa, używając pomysłów takich jak mutablem
.m
, ale ze względu na różnice<th>
/<td>
nie miałoby to znaczenia. Nadal muszę sprawdzić, czy jest to pierwsza iteracja pętli zewnętrznej, w którym to przypadku potrzebuję obuj
im
, i muszę wykonać pętlę wewnętrzną wiele razy, w takim przypadku potrzebujęi
in
. Zamiast iść w górę od 0 i sprawdzićj<2
, mógłbym wrócić i sprawdzići>m-2
, ale będzie to +1 bajt zamiast -1. Twoje podejście do używania dwóch oddzielnych pętli z możliwością modyfikacjim
in
jest rzeczywiście interesujące. :)APL (Dyalog Unicode) ,
4238 bajtów SBCS-4 dzięki ngn.
Pełny program Monituje stdin dla listy dwóch elementów [m, n] i wypisuje niezamknięte tagi na standardowe wyjście.
Wypróbuj online!
⊂'<th>A'
dołącz ten ciąg, aby traktować go jako całość⎕⍴
szybka wymiarów i cyklicznie r eshape pojedynczej komórki do matrycy, że wielkość…⍀
kumulatywnie wstaw następującą funkcję między każdą pionową parą komórek:{'d'}@3
zignoruj górną komórkę; umieśćd
na 3. pozycji w dolnej komórce'<tr>',⍤1
dodaj ten ciąg do każdego wiersza∊
ε nlist (spłaszczyć)'<table>',
dodaj ten ciągźródło
'd'⎕R'h'
->'h'@3
(⊂'<tr>'),
->'<tr>',⍤1
i...@1
->...⍀
C (gcc) ,
107999897 bajtówWypróbuj online!
-8 bajtów dzięki ziemniakowi
-2 bajty dzięki pułapkowi cat
s
Tablica musi zostać zadeklarowana jako nie tablica wskaźnik w przeciwnym razie nie będzie można edytować (możemy ustawić pierwszy h do reklamy). Większość przeglądarek nawet nie dba o to, czy tag zamykający jest poprawny, więc zamykamy wszystkie za pomocą</t>
.źródło
</t>
pojawiający się dwukrotnie i -8 bajtów.R , 73 bajty
Wypróbuj online!
Zapisano 7 bajtów z brudnym włamaniem - zamień „rep” na „<”.
źródło
Haskell ,
109107103 bajtówTyle nawiasów… Dzięki @nimi za dwa bajty (i utratę ogólności)!
Wypróbuj online!
Bez tagów końcowych prosta implementacja wygrywa przy 87 bajtach ( Wypróbuj online ):
źródło
APL + WIN,
68 6356 bajtówW sumie 12 bajtów zaoszczędzonych dzięki Adámowi
Monity o liczbę wierszy, a następnie liczbę kolumn i opcji wyjścia niezamknięcia:
źródło
∊
końcowych parens:t,,((⎕-1),n←⎕)⍴r
ani dwóch pierwszych przecinków.h
i przejdźr
do głównego wyrażenia:'<table>'t(n⍴⊂'<th>A')t,,((⎕-1),n←⎕)⍴⊂'<td>A'
<tr>
dla ciała. Każdy rząd potrzebuje<tr>
.Siatkówka ,
5654 bajtówWypróbuj online! Edycja: Zapisano 2 bajty dzięki @CowsQuack. Objaśnienie: Pierwszy etap wykorzystuje najpierw mnożenie ciągów Retina 1 do wygenerowania odpowiedniej liczby komórek, a następnie do wygenerowania odpowiedniej liczby wierszy. Drugi etap następnie zmienia pierwszy rząd
td
s nath
s.źródło
.
zamiast\d
Węgiel drzewny , 33 bajty
Wypróbuj online!
Wyjaśnienie
źródło
K, 58 bajtów
Wersja K to wszystko, co jest zawarte w
KDB+ 3.5 2017.11.30
.Port odpowiedzi Python powyżej. Kończy się o 1 bajt dłużej ze względu na konieczność wielokrotnego zapisywania i spłaszczania.
źródło
Perl 5
-p
,6554 bajtów-11 bajtów dzięki przypomnieniu @ msh2108
Wypróbuj online!
źródło
.'</table>'
.C # (.NET Core) , 130 bajtów
Wypróbuj online!
źródło
PowerShell Core ,
7268 bajtówWypróbuj online!
Oto moje przypadki testowe i oczekiwane wyniki (Cf, TIO)
<table><tr><th>A<th>A<th>A<tr><td>A<td>A<td>A
<table><tr><th>A<th>A<th>A
<table><tr><th>A<th>A<tr><td>A<td>A<tr><td>A<td>A<tr><td>A<td>A
<table><tr><th>A<th>A<th>A<th>A<th>A<th>A<th>A<th>A<tr><td>A<td>A<td>A<td>A<td>A<td>A<td>A<td>A
Dzięki, @ mazzy , za -4 bajty!
źródło
Function F($m,$n){'<table><tr>'+'<th>A'*$n+('<tr>'+'<td>A'*$n)*--$m}
.Pyth , 40 bajtów
Wypróbuj online!
źródło
Dart ,
4563 bajtówRozwiązanie robocze:
Wypróbuj online tutaj!
Funkcja lambda / anonimowa przyjmuje
m
in
jako parametry wyświetla dane wyjściowe doSTDOUT
.Ponieważ tabele z unclosed
<table>
,<tr>
,<th>
, i<td>
tagi nadal czynią w nowoczesnych przeglądarek (np. Chrome), wyjście jest ważny.Stare (zepsute) rozwiązanie:
Moja pierwsza próba zapomniała przejść do
<td>
pierwszego wiersza:Dzięki @Lynn za zwrócenie na to uwagi.
źródło
Arkusze Google, 66 bajtów
Dane wejściowe są w komórce
A1
iB1
.Naprawdę nie ma nic wyszukanego; to tylko zagnieżdżone
Rept
funkcje.To nie zakładać
m > n > 0
i że oboje są liczbami całkowitymi.źródło
Galaretka ,
3332 bajtyPełny program do pobierania
rows
,columns
który drukuje wynik.Wypróbuj online!
hmm, również 32 przy użyciu tabeli:
źródło
J, 64 bajty
Kolejny port odpowiedzi w języku Python:
źródło
PHP, 161 bajtów
Wypróbuj online
Kod
Wyjaśnienie
PHP, 193 bajtów
Zapomniałem opełnej strukturze stołu<tfooter>
<thead>, <tbody>..etc..
Wypróbuj przykład funkcji
Wyjaśnienie
$t=["table>","thead>","tbody>","th>","td>","tbody>","tr>"];
Zapisywana jest tablica ze wszystkimi znacznikami dla tabeli, w której została zbudowana, a następnie z
str_repeat
liczbą odnoszącą się do indeksu w tablicy jest zapisywana, a następnie dostrtr
ciągu i tablica jest przekazywanaźródło
Yabasic , 124 bajty
Anonimowa funkcja, która pobiera dane wejściowe z rozdzielonych spacjami liczb całkowitych i danych wyjściowych do konsoli.
Wypróbuj online!
źródło
Dalej (gforth) , 86 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Marchew ,
7751 bajtów(Pracując nad tym, odkryłem błąd, który
h
nie 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 2
drukują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>A
jest 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 dolnegov
. Spowoduje to utworzenie wiersza nagłówka tabeli.Aby utworzyć wiersze danych, duplikujemy nagłówek do innej komórki.
l
przenosi 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 moglih
pobrać 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
A
ustawia 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 zamieniah
s nad
s, aby utworzyć wiersze danych. Terazh
przechodzimy 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,v
przygotowując go.źródło
K (ngn / k) , 51 bajtów
Wypróbuj online!
źródło
PowerShell, 63 bajty
zapisz to jako
new-mntable.ps1
. Skrypt testowy:wyjście (dodatkowe spacje są opcjonalne):
PowerShell, 65 bajtów,
-replace
zapisz to jako
new-mntable.ps1
. Skrypt testowy:wydajność:
Jak to działa:
'<table>h'+'d'*--$args[0]
- utwórz ciąg podobny do<table>hddd...
'h|d'
- wyszukiwanieh
lubd
znaki w ciągu do zastąpienia'<tr>'+'<t$0>A'*$args[1]
- zamień każdy znak na ciąg znaków podobny do<tr><t$0>A<t$0>A...
$0
jest schwytanygroup[0]
- char w-replace
.PowerShell, 65 bajtów,
scriptblock
zapisz to jako
new-mntable.ps1
. Skrypt testowy:wydajność:
źródło