Memasukkan :
Dua bilangan bulat desimal m
dan n
yang masing-masing memberikan jumlah baris dan kolom tabel.
m
dan n
lebih 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 kode-golf 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
code-golf
code-generation
kentang
sumber
sumber
Jawaban:
APL (Dyalog Unicode) dengan MiServer 3.0 ,
3130 byte SBCSProgram lengkap. Anjurkan stdin untuk daftar dua elemen
[m,n]
dan cetak XHTML yang ketat untuk stdout.Sesi contoh:
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)sumber
JavaScript (ES6), 70 byte
Disimpan 2 byte berkat @RickHitchcock
Mengambil input dalam sintaks currying
(m)(n)
.Cobalah online!
Demo
Tampilkan cuplikan kode
sumber
Python 2 , 57 byte
Cobalah online! Diasumsikan
m
tidak nol.sumber
Kanvas , 31 byte
Coba di sini! atau Coba divisualisasikan!
Setelah memperbaiki 2 bug (ಠ_ಠ) pada interpreter, 30 byte juga berfungsi
sumber
JavaScript, 65 byte
sumber
05AB1E , 30 byte
Cobalah online!
Penjelasan
sumber
Stax , 28 byte
Jalankan dan debug itu
Dibongkar, tidak diserang, dan dikomentari, sepertinya ini.
Jalankan yang ini
sumber
Java 10,
139133102 byteCobalah online.
Penjelasan:
sumber
(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-ubahm
.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 keduanyaj
danm
, dan saya perlu melakukan loop dalam beberapa kali, dalam hal ini saya perlui
dann
. Alih-alih naik dari 0 dan memeriksaj<2
saya bisa mundur dan memeriksai>m-2
, tetapi itu akan menjadi +1 byte, bukan -1. Pendekatan Anda menggunakan dua loop terpisah dengan yang dapat dimodifikasim
dann
memang menarik. :)APL (Dyalog Unicode) ,
4238 byte SBCS-4 Terima kasih kepada ngn.
Program lengkap. Anjurkan stdin untuk daftar dua elemen [m, n] dan cetak tag tidak tertutup untuk stdout.
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; tempatkand
di posisi ke-3 di sel bawah'<tr>',⍤1
tambahkan string ini setiap baris∊
ϵ daftar (ratakan)'<table>',
tambahkan string inisumber
'd'⎕R'h'
->'h'@3
(⊂'<tr>'),
->'<tr>',⍤1
dan...@1
->...⍀
C (gcc) ,
107999897 byteCobalah online!
-8 byte berkat kentang
-2 bytes berkat ceilingcat
The
s
Array 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>
.sumber
</t>
yang muncul dua kali dan -8 byte.R , 73 byte
Cobalah online!
Disimpan 7 byte dengan hack kotor - ganti "rep" dengan "<".
sumber
Haskell ,
109107103 byteBegitu 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 ):
sumber
APL + WIN,
68 6356 byte12 byte total disimpan berkat Adám
Anjuran untuk jumlah baris diikuti oleh jumlah kolom dan output opsi non-penutupan:
sumber
∊
atau parenting:t,,((⎕-1),n←⎕)⍴r
atau dua koma pertama.h
danr
menjadi ekspresi utama:'<table>'t(n⍴⊂'<th>A')t,,((⎕-1),n←⎕)⍴⊂'<td>A'
<tr>
untuk badan. Setiap baris membutuhkan a<tr>
.Retina ,
5654 byteCobalah 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
td
s menjadith
s.sumber
.
sebagai pengganti\d
Arang , 33 byte
Cobalah online!
Penjelasan
sumber
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.
sumber
Perl 5
-p
,6554 byte-11 byte berkat pengingat @ msh2108
Cobalah online!
sumber
.'</table>'
.C # (.NET Core) , 130 byte
Cobalah online!
sumber
PowerShell Core ,
7268 byteCobalah online!
Berikut adalah kasus pengujian saya dan output yang diharapkan (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
Terima kasih, @ mazzy , untuk -4 byte!
sumber
Function F($m,$n){'<table><tr>'+'<th>A'*$n+('<tr>'+'<td>A'*$n)*--$m}
.Pyth , 40 byte
Cobalah online!
sumber
Dart ,
4563 byteSolusi kerja:
Coba online di sini!
Lambda / fungsi anonim yang mengambil
m
dann
sebagai parameter, menampilkan output keSTDOUT
.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:Terima kasih kepada @Lynn karena menunjukkannya.
sumber
Google Sheets, 66 byte
Input ada di sel
A1
danB1
.Tidak ada yang mewah, sungguh; itu hanya
Rept
fungsi bersarang .Ini tidak menganggap
m > n > 0
dan bahwa mereka berdua bilangan bulat.sumber
Jelly ,
3332 bytePengambilan program secara penuh
rows
,columns
yang mencetak hasilnya.Cobalah online!
hmm, juga 32 menggunakan tabel:
sumber
J, 64 byte
Port lain dari jawaban Python:
sumber
PHP, 161 Bytes
Cobalah online
Kode
Penjelasan
PHP, 193 Bytes
Struktur tabel penuh
lupa<tfooter>
<thead>, <tbody>..etc..
Coba contoh fungsi
Penjelasan
$t=["table>","thead>","tbody>","th>","td>","tbody>","tr>"];
Array dengan semua tag untuk tabel yang dibuatnya dan kemudian dengan
str_repeat
nomor yang merujuk ke indeks dalam array ditulis, kemudian kestrtr
string ditambah array dilewatkansumber
Yabasic , 124 byte
Fungsi anonim yang mengambil input dari bilangan bulat yang dibatasi ruang dan keluaran ke konsol.
Cobalah online!
sumber
Keempat (gforth) , 86 byte
Cobalah online!
Penjelasan
sumber
Wortel ,
7751 byte(Saat mengerjakan ini, saya menemukan bug dengan
h
tidak bekerja dan memperbaikinya)Memotong beberapa byte dengan memperpendek html serta menggunakan "split, join", bukan "replace"
Cobalah online! , gunakan opsi baris perintah
-d
untuk 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 2
mencetak 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>A
ditambahkan ke stack-string yang awalnya kosong. Kemudian ikuti*
perintah yang menduplikatnya$
, input, kali. Kemudian<tr>
ditambahkan ke stack-string oleh penggunaan down-caretv
. Ini menciptakan baris tajuk tabel.Untuk membuat baris data, kami menduplikasi header ke sel lain.
l
memindahkan 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 bisah
mendapatkan string di sel kiri. Ini kemudian*
digandakan oleh($^F- 1)
, input berikutnya minus 1, kali.Masih di sel kanan,
A
atur array sel ini ke tumpukannya"h"
.S
bergabung dengan array stack dengan"d"
dan mengatur string stack ke nilai ini.A"h"S"d"
benar-benar hanya menggantih
s dengand
s untuk membentuk baris data. Sekarangh
kita 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 denganv
menambahkannya terlebih dahulu.sumber
K (ngn / k) , 51 byte
Cobalah online!
sumber
Powershell, 63 byte
simpan sebagai
new-mntable.ps1
. Skrip uji:output (ruang tambahan adalah opsional):
Powershell, 65 byte,
-replace
simpan sebagai
new-mntable.ps1
. Skrip uji:keluaran:
Bagaimana cara kerjanya:
'<table>h'+'d'*--$args[0]
- buat string seperti<table>hddd...
'h|d'
- carih
ataud
karakter dalam string untuk diganti'<tr>'+'<t$0>A'*$args[1]
- Ganti setiap karakter dengan string seperti<tr><t$0>A<t$0>A...
$0
ditangkapgroup[0]
- arang di-replace
.Powershell, 65 byte,
scriptblock
simpan sebagai
new-mntable.ps1
. Skrip uji:keluaran:
sumber