Utwórz tabelę am * n w HTML

22

Wejście:

Dwie liczby dziesiętne mi nktóre odpowiednio podać liczbę wierszy i kolumn w tabeli. mi nsą 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 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

Ziemniak
źródło
Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu .
Mego

Odpowiedzi:

7

APL (Dyalog Unicode) z MiServer 3.0 , 31 30 bajtów SBCS

Pełny program Monituje stdin dla listy dwóch elementów [m,n]i wypisuje ścisłe XHTML na standardowe wyjście.

(⎕NEW _.Table((⎕⍴0)⍬1)).Render

Przykładowa sesja:

      )xload C:\Users\Adam.DYALOG\Documents\MiServer\miserver.dws
C:\Users\Adam.DYALOG\Documents\MiServer\miserver.dws saved Wed Mar  7 17:19:40 2018
      Load ''
Development environment loaded
MiSite "C:/Users/Adam.DYALOG/Documents/MiServer/MS3/" loaded
      (⎕NEW _.Table((⎕⍴0)⍬1)).Render
⎕:
      2 3
<table id="id691498143"><thead><tr><th>0</th><th>0</th><th>0</th></tr></thead><tbody><tr><td>0</td><td>0</td><td>0</td></tr></tbody></table>

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)

Adám
źródło
6

JavaScript (ES6), 70 bajtów

Zaoszczędzono 2 bajty dzięki @RickHitchcock

Pobiera dane wejściowe w składni curry (m)(n).

m=>n=>'<table>'+(g=c=>'<tr>'+`<t${c}>A`.repeat(n))`h`+g`d`.repeat(m-1)

Wypróbuj online!

Próbny

Arnauld
źródło
3

JavaScript, 65 bajtów

f=(m,n)=>m?f(--m,n)+'<tr>'+`<t${m?'d':'h'}>x`.repeat(n):'<table>'

document.write(f(4,3));

l4m2
źródło
rekurencja. miły!
mazzy
2

05AB1E , 30 bajtów

’<…È>’sF"<tr>"„hdNĀè"<tÿ>A"I×J

Wypróbuj online!

Wyjaśnienie

’<…È>’                           # push "<table>"
      sF                         # no-of-rows times do:
        "<tr>"                   # push "<tr>"
              „hd                # push "hd"
                 NĀ              # push the iteration counter truthified
                   è             # index into the 2-char string with this
                    "<tÿ>A"      # insert the result into the string "<tÿ>A" instead of ÿ
                           I×    # repeat this string no-of-columns times
                             J   # join the stack to a single string
Emigna
źródło
2

Stax , 28 bajtów

üÉ$♠═?S┼╪├8°‼←sí☼←T≡┴╜ô‼\↑0ⁿ

Uruchom i debuguj

Rozpakowane, niepolowane i skomentowane, wygląda to tak.

"<table>"P  print "table"
"<th>A"*    "<th>A" repeated specified number of times
,D          repeat the rest of the program specified number of times
  "<tr>"p   print "<tr>" with no newline
  Q         print top of stack without popping
  .hd|t     replace "h" with "d"

Uruchom ten

rekurencyjny
źródło
2

Java 10, 139 133 102 bajtów

m->n->{var r="<table>";for(int j=0,i;j++<m;)for(r+="<tr>",i=n;i-->0;r+=j<2?"<th>A":"<td>B");return r;}

Wypróbuj online.

Wyjaśnienie:

n->m->{                  // Method with two integer parameters and String return-type
  var r="<table>";       //  Result-String, starting at "<table>"
  for(int j=0,i;j++<m;)  //  Loop `j` over the rows in the range [0, `m`)
    for(r+="<tr>",       //   Append "<tr>" to the result
        i=n;i-->0;       //   Inner loop `i` over the columns in the range [`n`, 0)
      r+=j<2?            //    If `j` is 1 (first iteration):
          "<th>A"        //     Append "<th>A" to the result
         :               //    Else:
          "<td>B");      //     Append "<td>B" to the result
  return r;}             //  Return the result
Kevin Cruijssen
źródło
Myślę, że jest trochę literówki, napisałeś „th” dwa razy.
ziemniak
@potato Ach, masz rację. Sam kod i łącze TIO były poprawne, ale moje wyjaśnienie zawierało literówkę. Teraz powinno zostać naprawione, dzięki.
Kevin Cruijssen
(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 mutable m.
Olivier Grégoire
@ OlivierGrégoire Początkowo miałem modyfikowalne 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ę obu ji m, i muszę wykonać pętlę wewnętrzną wiele razy, w takim przypadku potrzebuję ii n. 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ą modyfikacji mi njest rzeczywiście interesujące. :)
Kevin Cruijssen
2

APL (Dyalog Unicode) , 42 38 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.

'<table>',∊'<tr>',⍤1{'d'}@3⍀⎕⍴⊂'<th>A'

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ść dna 3. pozycji w dolnej komórce

'<tr>',⍤1 dodaj ten ciąg do każdego wiersza

ε nlist (spłaszczyć)

'<table>', dodaj ten ciąg

Adám
źródło
@ngn Wszystko gotowe. Dzięki. Istotne .
Adám
2

C (gcc) , 107 99 98 97 bajtów

i;f(x,y){char s[]="<th>A";for(puts("<table><tr>");x--;s[2]=96+puts("<tr>"))for(i=y;i--;)puts(s);}

Wypróbuj online!

-8 bajtów dzięki ziemniakowi

-2 bajty dzięki pułapkowi cat

sTablica 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>.

LambdaBeta
źródło
Nadal działa dobrze, jeśli usuniesz </t>pojawiający się dwukrotnie i -8 bajtów.
ziemniak
Możesz ogolić jeszcze 4 bajty, jeśli przesuniesz wyjście nowego wiersza do wewnętrznej pętli (unikniesz też pustego rzędu): Wypróbuj online!
ErikF,
2

R , 73 bajty

function(n,m)cat("<table><tr>","<th>A"<m,c("<tr>","<td>A"<m)<n-1)
"<"=rep

Wypróbuj online!

Zapisano 7 bajtów z brudnym włamaniem - zamień „rep” na „<”.

JayCe
źródło
1

Haskell , 109 107 103 bajtów

n!i="<t"++n++'>':i++"</t"++n++">"
r#c="able"!("r"!([1..c]*>"h"!"H")++([2..r]*>("r"!([1..c]*>"d"!"A"))))

Tyle 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?c="<table><tr>"++([1..c]*>"<th>H")++([2..r]*>("<tr>"++([1..c]*>"<td>A")))++"</table>"
Angs
źródło
1

APL + WIN, 68 63 56 bajtów

W 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:

t←⊂'<tr>'⋄'<table>'t(n⍴⊂'<th>A'),,t,((⎕-1),n←⎕)⍴⊂'<td>A'
Graham
źródło
@ Adám Zbyt wyzwalacz szczęśliwy Obawiam się. Wygląda teraz OK?
Graham,
Tak, ale nie potrzebujesz końcowych parens: t,,((⎕-1),n←⎕)⍴rani dwóch pierwszych przecinków.
Adám,
@ Adám Thanks. To nie mój dzień musi być upałem (28 ° C)!
Graham,
Scal hi przejdź rdo głównego wyrażenia:'<table>'t(n⍴⊂'<th>A')t,,((⎕-1),n←⎕)⍴⊂'<td>A'
Adám
Coś jest nie tak. Wstawiasz tylko jeden <tr>dla ciała. Każdy rząd potrzebuje <tr>.
Adám,
1

Siatkówka , 56 54 bajtów

(.+) (.+)
<table>$1*$(<tr>$2*$(<td>@
T`\d`\h`^.*?r.*?r

Wypró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 tds na ths.

Neil
źródło
Jeśli wiesz, że dane wejściowe zostaną podzielone na spacje, powinieneś być w stanie użyć .zamiast\d
Kritixi Lithos
1

Węgiel drzewny , 33 bajty

<table><tr>×<th>AηF⊖θ«<tr>×<td>Aη

Wypróbuj online!

Wyjaśnienie

<table><tr>                         Print "<table><tr>"
           ×<th>Aη                  Print "<th>A" * second input
                  F⊖θ«            For i in (implicit) range over first input
                        <tr>        Print("<tr>")
                            ×<td>Aη Print("<td>A") * second input
Tylko ASCII
źródło
1

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.

{,/"<table><tr>",(y#,"<th>A"),(x-1)#,("<tr>",/y#,"<td>A")}
hoosierEE
źródło
1

Perl 5 -p , 65 54 bajtów

-11 bajtów dzięki przypomnieniu @ msh2108

/ /;$_="<table><tr>"."<th>A"x$'.('<tr>'.'<td>B'x$')x$`

Wypróbuj online!

Xcali
źródło
Zaoszczędź sobie bajtów. Na przykład w wyzwaniu możesz upuścić .'</table>'.
msh210
1

C # (.NET Core) , 130 bajtów

m=>n=>{var r="<table>";for(int i=0;i++<m;)r+="<tr>"+string.Concat(System.Linq.Enumerable.Repeat(i<2?"<th>H":"<td>D",n));return r;}

Wypróbuj online!

Emanuel Vintilă
źródło
1

PowerShell Core , 72 68 bajtów

Function F($m,$n){'<table><tr>'+'<th>A'*$n+('<tr>'+'<td>A'*$n)*--$m}

Wypróbuj online!

Oto moje przypadki testowe i oczekiwane wyniki (Cf, TIO)

  • m = 2; n = 3 <table><tr><th>A<th>A<th>A<tr><td>A<td>A<td>A
  • m = 1; n = 3 <table><tr><th>A<th>A<th>A
  • m = 4; n = 2 <table><tr><th>A<th>A<tr><td>A<td>A<tr><td>A<td>A<tr><td>A<td>A
  • m = 2; n = 8 <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!

Jeff Freeman
źródło
1
Wsporniki są opcjonalne. Spróbować Function F($m,$n){'<table><tr>'+'<th>A'*$n+('<tr>'+'<td>A'*$n)*--$m}.
mazzy
0

Dart , 45 63 bajtów

Rozwiązanie robocze:

(m,n){print('<table><tr>'+'<th>A'*n+('<tr>'+'<td>A'*n)*(m-1));}

Wypróbuj online tutaj!

Funkcja lambda / anonimowa przyjmuje mi njako parametry wyświetla dane wyjściowe do STDOUT.

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:

(m,n){print('<table><tr>'+'<th>A'*n+('<tr>'+'<th>A'*n)*(m-1));}

Dzięki @Lynn za zwrócenie na to uwagi.

vasilescur
źródło
0

Arkusze Google, 66 bajtów

="<table><tr>"&Rept("<th>A",B1)&Rept("<tr>"&Rept("<td>A",B1),A1-1)

Dane wejściowe są w komórce A1i B1.
Naprawdę nie ma nic wyszukanego; to tylko zagnieżdżone Reptfunkcje.
To nie zakładać m > n > 0i że oboje są liczbami całkowitymi.

Inżynier Toast
źródło
0

Galaretka ,  33  32 bajty

“<td>A”ẋ”h3¦s5ẋ€ṭ€“<tr>”ṭ“¢ssɱU»

Pełny program do pobierania rows, columnsktóry drukuje wynik.

Wypróbuj online!


hmm, również 32 przy użyciu tabeli:

Ịị⁾hdṭ”t⁾<>j;ðþZṭ€“<tr>”ṭ“¢ssɱU»
Jonathan Allan
źródło
0

J, 64 bajty

Kolejny port odpowiedzi w języku Python:

4 :0
'<table><tr>',(;y#<'<th>A'),;(<:x)#<('<tr>',(;y#<'<td>A'))
)
hoosierEE
źródło
0

PHP, 161 bajtów

Wypróbuj online

Kod

function f($m,$n){$t=["table>","th>","td>","tr>","</"];echo strtr("
<0<3".str_repeat("<1A41",$n)."43".str_repeat("<3".str_repeat("
<2A42",$n)."43",$m-1)."40",$t);}

Wyjaśnienie

function f($m,$n){
  $t=["table>","th>","td>","tr>","</"];           //array representing the tags its created
  echo strtr("<0<3".str_repeat("<1A41",$n)."43"   //strtr it's called and uses 
                                                  //the array to replace values
           .str_repeat("<3".                      //repeat the tags
                         str_repeat("<2A42",$n)   //repeat the tags again
                            ."43",$m-1)."40",$t); 
   //its repeated m-1 times because head is counted as one row
  }

PHP, 193 bajtów

Zapomniałem o pełnej strukturze stołu<tfooter> <thead>, <tbody>..etc..

Wypróbuj przykład funkcji

function f($m,$n)   {$t=["table>","thead>","tbody>","th>","td>","tbody>","tr>"];
echo strtr(
      "<0<1".str_repeat("<3A</3",$n).
      "</1<2".str_repeat(
                  "<6".str_repeat("<4A</4",$n)
                       ."</6",$m-1)."</2</0",
  $t);
  }

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_repeatliczbą odnoszącą się do indeksu w tablicy jest zapisywana, a następnie do strtrciągu i tablica jest przekazywana

Francisco Hahn
źródło
0

Yabasic , 124 bajty

Anonimowa funkcja, która pobiera dane wejściowe z rozdzielonych spacjami liczb całkowitych i danych wyjściowych do konsoli.

?"<table>"
input""i,j
For c=1To i
?"<tr>"
For r=1To j
If c=1?"<th>H</th>"
If c>1?"<td>D</td>"
Next
?"</tr>"
Next
?"</table>"

Wypróbuj online!

Taylor Scott
źródło
To nie tworzy tagów <td>.
ziemniak
@potato - ahh, nie widziałem tego. Jest poprawione.
Taylor Scott
0

Dalej (gforth) , 86 bajtów

: f ." <table>" 0 do ." <tr>" dup 0 do j if ." <td>A" else ." <th>A" then loop loop ; 

Wypróbuj online!

Wyjaśnienie

." <table>"         \ output <table>
0 do                \ start loop from 0 to m-1
   ." <tr>"         \ output <tr>
   dup 0 do         \ duplicate n and loop from 0 to n-1
      j if          \ if the outer loop index is true (not 0)
         ." <td>A"  \ output <td>A
      else          \ if outer loop index is false (0)
         ." <th>A"  \ output <th>A
      then          \ end if-else
   loop             \ end inner loop
loop                \ end outer loop                      
reffu
źródło
0

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.

Kritixi Lithos
źródło
0

PowerShell, 63 bajty

$m,$n=$args;$t='h';'<table>';1..$m|%{'<tr>'+"<t$t>A"*$n;$t='d'}

zapisz to jako new-mntable.ps1. Skrypt testowy:

.\new-mntable.ps1 2 3
.\new-mntable.ps1 1 3
.\new-mntable.ps1 4 2
.\new-mntable.ps1 2 8

wyjście (dodatkowe spacje są opcjonalne):

<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

PowerShell, 65 bajtów, -replace

'<table>h'+'d'*--$args[0]-replace'h|d',('<tr>'+'<t$0>A'*$args[1])

zapisz to jako new-mntable.ps1. Skrypt testowy:

.\new-mntable.ps1 2 3
.\new-mntable.ps1 1 3
.\new-mntable.ps1 4 2
.\new-mntable.ps1 2 8

wydajność:

<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

Jak to działa:

  1. '<table>h'+'d'*--$args[0] - utwórz ciąg podobny do <table>hddd...
  2. 'h|d'- wyszukiwanie hlub dznaki w ciągu do zastąpienia
  3. '<tr>'+'<t$0>A'*$args[1] - zamień każdy znak na ciąg znaków podobny do <tr><t$0>A<t$0>A...
  4. gdzie $0jest schwytany group[0]- char w -replace.

PowerShell, 65 bajtów, scriptblock

$m,$n=$args;'<table>';&($r={'<tr>'+"<t$args>A"*$n})h;(&$r d)*--$m

zapisz to jako new-mntable.ps1. Skrypt testowy:

.\new-mntable.ps1 2 3
.\new-mntable.ps1 1 3
.\new-mntable.ps1 4 2
.\new-mntable.ps1 2 8

wydajność:

<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
mazzy
źródło