Tugasnya adalah untuk menampilkan tabel ascii untuk array yang diberikan.
Memasukkan
Masukan adalah matriks 2D. Panjang baris matriks sama dengan panjang array. Atau, Anda dapat mengambil input dari matriks 2D dengan baris pertama adalah header. Dimensi luar adalah baris.
Input Contoh:
[["License","2008-05-08","2009-03-11","2011-11-22","2013-08-12","2015-11-19"],["GPLv2","58.69%","52.2%","42.5%","33%","23%"],["GPLv3","1.64%","4.15%","6.5%","12%","9%"],["LGPL 2.1","11.39%","9.84%","?","6%","5%"],["LGPL 3.0","? (<0.64%)","0.37%","?","3%","2%"],["GPL family together","71.72% (+ <0.64%)","66.56%","?","54%","39%"]]
Keluaran
Output dari tabel terlihat seperti di bawah ini.
+---------------------+-------------------+------------+------------+------------+------------+
| License | 2008-05-08 | 2009-03-11 | 2011-11-22 | 2013-08-12 | 2015-11-19 |
+---------------------+-------------------+------------+------------+------------+------------+
| GPLv2 | 58.69% | 52.2% | 42.5% | 33% | 23% |
| GPLv3 | 1.64% | 4.15% | 6.5% | 12% | 9% |
| LGPL 2.1 | 11.39% | 9.84% | ? | 6% | 5% |
| LGPL 3.0 | ? (<0.64%) | 0.37% | ? | 3% | 2% |
| GPL family together | 71.72% (+ <0.64%) | 66.56% | ? | 54% | 39% |
+---------------------+-------------------+------------+------------+------------+------------+
Setiap sel memiliki tepat satu ruang di sebelah kiri dan setidaknya satu ruang di sebelah kanan, diisi sampai palang sejajar. Namun, setidaknya satu sel hanya memiliki satu ruang di sebelah kanannya.
Uji kasus
Input:
[["Hello", "World", "!!!"],["aa", "bbbbbbbbb", "CcC"], ["Pyth", "CJam", "GolfScript"]]
Output:
+-------+-----------+------------+
| Hello | World | !!! |
+-------+-----------+------------+
| aa | bbbbbbbbb | CcC |
| Pyth | CJam | GolfScript |
+-------+-----------+------------+
Contoh pengiriman
function ascii_table(array, header) {
var lengths = array[0].map(function(_, i) {
var col = array.map(function(row) {
if (row[i] != undefined) {
return row[i].length;
} else {
return 0;
}
});
return Math.max.apply(Math, col);
});
array = array.map(function(row) {
return '| ' + row.map(function(item, i) {
var size = item.length;
if (size < lengths[i]) {
item += new Array(lengths[i]-size+1).join(' ');
}
return item;
}).join(' | ') + ' |';
});
var sep = '+' + lengths.map(function(length) {
return new Array(length+3).join('-');
}).join('+') + '+';
if (header) {
return sep + '\n' + array[0] + '\n' + sep + '\n' +
array.slice(1).join('\n') + '\n' + sep;
} else {
return sep + '\n' + array.join('\n') + '\n' + sep;
}
}
Ini adalah kode-golf , jadi pengiriman dengan jumlah byte paling sedikit menang!
Jawaban:
CJam, 58 byte
Adakah yang tahu trik bermain golf di CJam?
sumber
vim,
139138134Menerima input dalam bentuk yang ditunjukkan dalam kasus uji. Mungkin atau mungkin tidak valid, karena ini bergantung pada input string tidak pernah yang mengandung
"
,,
,]
, atau|
karakter.Jika input harus mampu mengandung
]
s, maka:%s/]/\t./<cr>
dapat diganti denganqe$s<Tab>.<esc>j@eq@e
untuk 2 karakter tambahan. Tidak ada cara mudah untuk mengizinkan",|
input.Harus dijalankan di lingkungan Unix, karena bergantung pada
column
alat baris perintah.Penjelasan sedikit usang (oleh satu revisi, tapi itu hanya sedikit penataan ulang):
Terima kasih smpl untuk satu byte!
sumber
:set
dengan:se
.JavaScript (ES6), 210
212 219Edit 2 byte yang disimpan thx @Neil
UJI
sumber
a=>(
?(c,i)=>s[i]>(l=c.length)?0:s[i]=l
menghemat dua byte, saya pikir.Python 2, 190
Solusi ini memanfaatkan daftar pemahaman dan ekspresi generator. Ini menerima daftar daftar, dan mengembalikan string dalam format yang diperlukan.
Kode sebelum minifier:
yang keluaran:
sumber
from tabulate import*;a=input();print tabulate(a[1:],a[0],'psql',numalign='left')
MATLAB,
244 239 229226Penjelasan untuk diikuti.
Kasus cobaan:
Memasukkan:
Keluaran:
sumber
Ruby,
129126127126 karakterContoh dijalankan:
sumber