Задача состоит в том, чтобы отобразить таблицу ascii для данного массива.
вход
Вход представляет собой 2D матрицу. Длина строки матрицы совпадает с длиной массива. В качестве альтернативы вы можете взять ввод двумерной матрицы с первой строкой заголовка. Внешнее измерение - это строка.
Пример ввода:
[["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%"]]
Выход
Вывод таблицы выглядит следующим образом.
+---------------------+-------------------+------------+------------+------------+------------+
| 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% |
+---------------------+-------------------+------------+------------+------------+------------+
Каждая ячейка имеет ровно один пробел слева и как минимум один пробел справа, дополняемый до выравнивания полос. Однако, по крайней мере, одна ячейка имеет только один пробел справа.
Контрольные примеры
Input:
[["Hello", "World", "!!!"],["aa", "bbbbbbbbb", "CcC"], ["Pyth", "CJam", "GolfScript"]]
Output:
+-------+-----------+------------+
| Hello | World | !!! |
+-------+-----------+------------+
| aa | bbbbbbbbb | CcC |
| Pyth | CJam | GolfScript |
+-------+-----------+------------+
Пример представления
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;
}
}
Это код-гольф , поэтому выигрывает представление с наименьшим количеством байтов!
Ответы:
CJam, 58 байт
Кто-нибудь знает хитрость игры в гольф в CJam?
источник
vim,
139138134Принимает ввод в форме, показанной в тестовых примерах. Может или не может быть действительным, так как это зависит от входной строки никогда не содержащей какие - либо
"
,,
,]
или|
символов.Если вход должен содержать
]
s,:%s/]/\t./<cr>
его можно заменитьqe$s<Tab>.<esc>j@eq@e
на 2 дополнительных символа. Нет простого способа разрешить",|
ввод данных.Должен работать в среде Unix, так как он опирается на
column
инструмент командной строки.Немного устаревшее объяснение (одной ревизией, но это было всего лишь небольшим изменением):
Спасибо smpl за байт!
источник
:set
на:se
.JavaScript (ES6), 210
212 219Редактирование 2 байт сохраненного ТНХ @Neil
ТЕСТОВОЕ ЗАДАНИЕ
источник
a=>(
?(c,i)=>s[i]>(l=c.length)?0:s[i]=l
Я думаю, что сэкономит вам два байта.Python 2, 190
Это решение использует списки и выражения генератора. Он принимает список списков и возвращает строку в требуемом формате.
Код перед минификатором:
какие выводы:
источник
from tabulate import*;a=input();print tabulate(a[1:],a[0],'psql',numalign='left')
MATLAB,
244 239 229226Объяснение, чтобы следовать.
Прецедент:
Входные данные:
Выход:
источник
Рубин,
129126127126 символовОбразец прогона:
источник