Menghasilkan tabel am * n dalam HTML

22

Memasukkan :

Dua bilangan bulat desimal mdan nyang masing-masing memberikan jumlah baris dan kolom tabel. mdan nlebih besar dari atau sama dengan 1.

Keluaran:

Tabel dalam HTML yang memiliki kolom m rows dan n.

Tabel tersebut harus dapat ditampilkan oleh peramban modern pilihan Anda. Sebagian besar browser akan menampilkan semuanya dengan benar bahkan jika tag tidak ditutup. Indentasi dan spasi yang tepat adalah opsional.

Harus ada setidaknya satu karakter yang dapat dicetak (non-spasi) di setiap sel.

Sel-sel di baris pertama harus menggunakan <th>tag sedangkan yang di baris berikut harus menggunakan <td>tag.

Kondisi menang:

Ini adalah sehingga kode-sumber terpendek untuk setiap bahasa menang.

Contoh input:

2 3

Contoh keluaran:

<table>
 <tr>
   <th>A</th>
   <th>A</th>
   <th>A</th>
 </tr>
 <tr>
   <td>A</td>
   <td>A</td>
   <td>A</td>
 </tr>
</table>

atau : <table><tr><th>A<th>A<th>A<tr><td>A<td>A<td>A

kentang
sumber
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
Mego

Jawaban:

7

APL (Dyalog Unicode) dengan MiServer 3.0 , 31 30 byte SBCS

Program lengkap. Anjurkan stdin untuk daftar dua elemen [m,n]dan cetak XHTML yang ketat untuk stdout.

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

Sesi contoh:

      )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>

Cobalah online!

Penjelasan:

(... ).Render Render elemen HTML berikut:

⎕NEW _.Table (... ) Tabel baru dengan parameter berikut:

  (... ) ⍬ 1 konten berikut, tanpa gaya khusus, 1 baris tajuk:

   ⎕⍴0 input yang dievaluasi membentuk kembali nol (yaitu m-row, matriks n-kolom nol)

Adm
sumber
6

JavaScript (ES6), 70 byte

Disimpan 2 byte berkat @RickHitchcock

Mengambil input dalam sintaks currying (m)(n).

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

Cobalah online!

Demo

Arnauld
sumber
3

JavaScript, 65 byte

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

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

l4m2
sumber
rekursi. bagus!
mazzy
2

05AB1E , 30 byte

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

Cobalah online!

Penjelasan

’<…È>’                           # 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
sumber
2

Stax , 28 byte

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

Jalankan dan debug itu

Dibongkar, tidak diserang, dan dikomentari, sepertinya ini.

"<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"

Jalankan yang ini

rekursif
sumber
2

Java 10, 139 133 102 byte

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;}

Cobalah online.

Penjelasan:

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
sumber
Saya pikir ada kesalahan ketik kecil, Anda menulis "th" dua kali.
kentang
@potato Ah, kamu benar. Kode itu sendiri dan tautan TIO benar, tetapi penjelasan saya salah ketik. Harus diperbaiki sekarang, terima kasih.
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 bytes) Saya menemukan ini menarik, tetapi tidak layak diberi skor Anda saat ini. Anda mungkin bisa sedikit golf jawaban Anda menggunakan ide-ide di sini seperti bisa berubah-ubah m.
Olivier Grégoire
@ OlivierGrégoire Saya awalnya dapat dimodifikasi m, tetapi karena <th>/ <td>perbedaan itu tidak masalah. Saya masih perlu memeriksa apakah itu iterasi pertama dari loop luar, dalam hal ini saya membutuhkan keduanya jdan m, dan saya perlu melakukan loop dalam beberapa kali, dalam hal ini saya perlu idan n. Alih-alih naik dari 0 dan memeriksa j<2saya bisa mundur dan memeriksa i>m-2, tetapi itu akan menjadi +1 byte, bukan -1. Pendekatan Anda menggunakan dua loop terpisah dengan yang dapat dimodifikasi mdan nmemang menarik. :)
Kevin Cruijssen
2

APL (Dyalog Unicode) , 42 38 byte SBCS

-4 Terima kasih kepada ngn.

Program lengkap. Anjurkan stdin untuk daftar dua elemen [m, n] dan cetak tag tidak tertutup untuk stdout.

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

Cobalah online!

⊂'<th>A' lampirkan string ini untuk memperlakukannya secara keseluruhan

⎕⍴ cepat untuk dimensi dan siklis r eshape sel tunggal untuk matriks ukuran yang

…⍀ secara kumulatif menyisipkan fungsi berikut di antara setiap pasangan sel vertikal:

{'d'}@3 abaikan sel atas; tempatkan ddi posisi ke-3 di sel bawah

'<tr>',⍤1 tambahkan string ini setiap baris

ϵ daftar (ratakan)

'<table>', tambahkan string ini

Adm
sumber
@ ngn Semua sudah selesai. Terima kasih. Relevan .
Adm
2

C (gcc) , 107 99 98 97 byte

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

Cobalah online!

-8 byte berkat kentang

-2 bytes berkat ceilingcat

The sArray harus dideklarasikan sebagai array tidak pointer jika tidak maka tidak akan diedit (kita mengatur jam pertama untuk iklan). Sebagian besar browser bahkan tidak peduli jika tag penutup Anda benar, jadi kami tutup saja semua tag </t>.

LambdaBeta
sumber
Masih berfungsi dengan baik jika Anda menghapus </t>yang muncul dua kali dan -8 byte.
kentang
Anda dapat mencukur 4 byte lagi jika Anda memindahkan output baris baru ke loop dalam (juga, menghindari baris kosong): Cobalah online!
ErikF
2

R , 73 byte

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

Cobalah online!

Disimpan 7 byte dengan hack kotor - ganti "rep" dengan "<".

JayCe
sumber
1

Haskell , 109 107 103 byte

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

Begitu banyak tanda kurung ... Terima kasih kepada @nimi untuk dua byte (dan hilangnya kedermawanan)!

Cobalah online!

Tanpa tag akhir implementasi langsung menang pada 87 byte ( Coba online ):

r?c="<table><tr>"++([1..c]*>"<th>H")++([2..r]*>("<tr>"++([1..c]*>"<td>A")))++"</table>"
Angs
sumber
1

APL + WIN, 68 63 56 byte

12 byte total disimpan berkat Adám

Anjuran untuk jumlah baris diikuti oleh jumlah kolom dan output opsi non-penutupan:

t←⊂'<tr>'⋄'<table>'t(n⍴⊂'<th>A'),,t,((⎕-1),n←⎕)⍴⊂'<td>A'
Graham
sumber
@ Adám Terlalu memicu senang aku takut. Terlihat oke sekarang?
Graham
Ya, tetapi Anda tidak perlu atau parenting: t,,((⎕-1),n←⎕)⍴ratau dua koma pertama.
Adm
@ Adam Terima kasih. Ini bukan hari saya harus panas (28C)!
Graham
Menggabungkan hdan rmenjadi ekspresi utama:'<table>'t(n⍴⊂'<th>A')t,,((⎕-1),n←⎕)⍴⊂'<td>A'
Adám
Ada yang tidak beres. Anda hanya memasukkan satu <tr>untuk badan. Setiap baris membutuhkan a <tr>.
Adám
1

Retina , 56 54 byte

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

Cobalah online! Sunting: Disimpan 2 byte berkat @CowsQuack. Penjelasan: Tahap pertama menggunakan perkalian string Retina 1 terlebih dahulu untuk menghasilkan jumlah sel yang sesuai, kemudian untuk menghasilkan jumlah baris yang sesuai. Tahap kedua kemudian mengubah baris pertama tds menjadi ths.

Neil
sumber
Jika Anda tahu inputnya akan dipisah berdasarkan spasi, maka Anda seharusnya dapat menggunakannya .sebagai pengganti\d
Kritixi Lithos
1

Arang , 33 byte

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

Cobalah online!

Penjelasan

<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
Khusus ASCII
sumber
1

K, 58 byte

Versi K adalah apa pun yang termasuk dalam KDB+ 3.5 2017.11.30.

Port jawaban Python di atas. Berakhir menjadi 1 byte lebih lama karena harus mendaftar dan meratakan beberapa kali.

{,/"<table><tr>",(y#,"<th>A"),(x-1)#,("<tr>",/y#,"<td>A")}
hoosierEE
sumber
1

Perl 5 -p , 65 54 byte

-11 byte berkat pengingat @ msh2108

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

Cobalah online!

Xcali
sumber
Simpan sendiri beberapa byte. Sebagai contoh dalam tantangan, Anda dapat menjatuhkan .'</table>'.
msh210
1

C # (.NET Core) , 130 byte

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;}

Cobalah online!

Emanuel Vintilă
sumber
1

PowerShell Core , 72 68 byte

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

Cobalah online!

Berikut adalah kasus pengujian saya dan output yang diharapkan (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

Terima kasih, @ mazzy , untuk -4 byte!

Jeff Freeman
sumber
1
Kurung adalah opsional. Coba Function F($m,$n){'<table><tr>'+'<th>A'*$n+('<tr>'+'<td>A'*$n)*--$m}.
mazzy
0

Pyth , 40 byte

J"<tr>"AQ"<table>"J*H"<th>A"*tGJ*H"<td>A

Cobalah online!

hakr14
sumber
0

Dart , 45 63 byte

Solusi kerja:

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

Coba online di sini!

Lambda / fungsi anonim yang mengambil mdan nsebagai parameter, menampilkan output ke STDOUT.

Sejak tabel dengan tertutup <table>, <tr>, <th>, dan <td>tag masih membuat dalam browser modern (ex., Chrome), output adalah valid.

Solusi lama (rusak):

Upaya pertama saya lupa untuk beralih ke <td>setelah baris pertama:

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

Terima kasih kepada @Lynn karena menunjukkannya.

vasilescur
sumber
0

Google Sheets, 66 byte

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

Input ada di sel A1dan B1.
Tidak ada yang mewah, sungguh; itu hanya Reptfungsi bersarang .
Ini tidak menganggap m > n > 0dan bahwa mereka berdua bilangan bulat.

Toast insinyur
sumber
0

Jelly ,  33  32 byte

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

Pengambilan program secara penuh rows, columnsyang mencetak hasilnya.

Cobalah online!


hmm, juga 32 menggunakan tabel:

Ịị⁾hdṭ”t⁾<>j;ðþZṭ€“<tr>”ṭ“¢ssɱU»
Jonathan Allan
sumber
0

J, 64 byte

Port lain dari jawaban Python:

4 :0
'<table><tr>',(;y#<'<th>A'),;(<:x)#<('<tr>',(;y#<'<td>A'))
)
hoosierEE
sumber
0

PHP, 161 Bytes

Cobalah online

Kode

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);}

Penjelasan

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 Bytes

Struktur tabel penuh lupa<tfooter> <thead>, <tbody>..etc..

Coba contoh fungsi

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);
  }

Penjelasan

$t=["table>","thead>","tbody>","th>","td>","tbody>","tr>"];

Array dengan semua tag untuk tabel yang dibuatnya dan kemudian dengan str_repeatnomor yang merujuk ke indeks dalam array ditulis, kemudian ke strtrstring ditambah array dilewatkan

Francisco Hahn
sumber
0

Yabasic , 124 byte

Fungsi anonim yang mengambil input dari bilangan bulat yang dibatasi ruang dan keluaran ke konsol.

?"<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>"

Cobalah online!

Taylor Scott
sumber
Ini tidak menghasilkan tag <td>.
kentang
@potato - ahh, saya belum melihat itu. Itu diperbaiki.
Taylor Scott
0

Keempat (gforth) , 86 byte

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

Cobalah online!

Penjelasan

." <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
sumber
0

Wortel , 77 51 byte

<th>A^*$v<tr>vl+(^h)*($^F- 1)A"h"S"d"h+(^l)v<table>

(Saat mengerjakan ini, saya menemukan bug dengan htidak bekerja dan memperbaikinya)

Memotong beberapa byte dengan memperpendek html serta menggunakan "split, join", bukan "replace"

Cobalah online! , gunakan opsi baris perintah -duntuk melihat AST (Catatan: ini menggunakan penerjemah simpul baru, sehingga versi yang lebih lama di situs web tidak dapat menjalankan ini.)

Program ini mengambil input 0-diindeks dan dalam urutan terbalik, karena sifat aneh Carrot, sehingga 3 2mencetak tabel 3 × 4.

Jalankan program seperti itu, ./carrot -f prog.carrot input.txt

Pada dasarnya membuat baris tajuk, kemudian data baris pada sel lain dari kebun (rekaman 2D), dan menyatukannya bersama-sama.


Wortel bekerja pada pita 2D, yang disebut taman. Setiap sel di taman terdiri dari tiga mode tumpukan, string, float, array. Ada nilai untuk setiap mode, yang disebut "tumpukan" (catatan: keliru). Tumpukan ini mulai kosong. Ketika sel berada pada mode tertentu, perintah berikut akan memengaruhi tumpukan yang sesuai dengan mode ini, misalnya dalam mode float, operasi akan memengaruhi stack float. Dan tentu saja, ada perintah untuk beralih antar mode. Mode ini penting karena setiap operator dapat kelebihan beban untuk setiap mode dan setiap jenis argumen.

Selain itu, ada dua mode tambahan (ini hanya memengaruhi perintah, bukan tumpukan langsung), mode normal dan mode caret. Mode normal berfungsi normal, di mana ada operator yang mengambil argumen dan memengaruhi tumpukan secara langsung. Dalam mode caret, (hampir) setiap karakter ditafsirkan secara harfiah sebagai string, dan kemudian ditambahkan / ditambahkan sesuai dengan tumpukan. Mode caret dimulai / diakhiri dengan caret (append) atau down-caret (prepend).

Wortel dimulai di sel di kebun, dalam mode string-string, dan dalam mode caret.


Dimulai dengan caret-mode, string <th>Aditambahkan ke stack-string yang awalnya kosong. Kemudian ikuti *perintah yang menduplikatnya $, input, kali. Kemudian <tr>ditambahkan ke stack-string oleh penggunaan down-caret v. Ini menciptakan baris tajuk tabel.

Untuk membuat baris data, kami menduplikasi header ke sel lain. lmemindahkan IP ke sel kosong kanan, dan +menambahkan (^h)string dalam sel ke kiri (pada dasarnya menyalinnya ke sel di sebelah kanan). ()memulai subkulit, program Wortel baru dengan rekaman yang hampir sama, dan ^keluar dari mode caret sehingga kita bisa hmendapatkan string di sel kiri. Ini kemudian *digandakan oleh ($^F- 1), input berikutnya minus 1, kali.

Masih di sel kanan, Aatur array sel ini ke tumpukannya "h". Sbergabung dengan array stack dengan "d"dan mengatur string stack ke nilai ini. A"h"S"d"benar-benar hanya mengganti hs dengan ds untuk membentuk baris data. Sekarang hkita pindah ke sel awal yang mulai.

Sekarang kita menambahkan string stack sel ke kanan menggunakan sel ini +(^l). Yang tersisa hanyalah menambahkan <table>tag, jadi kami melakukan ini dengan vmenambahkannya terlebih dahulu.

Kritixi Lithos
sumber
0

Powershell, 63 byte

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

simpan sebagai new-mntable.ps1. Skrip uji:

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

output (ruang tambahan adalah opsional):

<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 byte, -replace

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

simpan sebagai new-mntable.ps1. Skrip uji:

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

keluaran:

<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

Bagaimana cara kerjanya:

  1. '<table>h'+'d'*--$args[0] - buat string seperti <table>hddd...
  2. 'h|d'- cari hatau dkarakter dalam string untuk diganti
  3. '<tr>'+'<t$0>A'*$args[1] - Ganti setiap karakter dengan string seperti <tr><t$0>A<t$0>A...
  4. di mana $0ditangkap group[0]- arang di -replace.

Powershell, 65 byte, scriptblock

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

simpan sebagai new-mntable.ps1. Skrip uji:

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

keluaran:

<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
sumber