Zadanie polega na wyświetleniu tabeli ascii dla danej tablicy.
Wejście
Dane wejściowe to macierz 2D. Długość wiersza macierzy jest taka sama jak długość tablicy. Alternatywnie możesz pobrać dane z macierzy 2D, przy czym pierwszym wierszem jest nagłówek. Wymiar zewnętrzny to rząd.
Przykładowe dane wejściowe:
[["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%"]]
Wynik
Dane wyjściowe tabeli wyglądają jak poniżej.
+---------------------+-------------------+------------+------------+------------+------------+
| 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% |
+---------------------+-------------------+------------+------------+------------+------------+
Każda komórka ma dokładnie jedną spację po lewej stronie i przynajmniej jedną spację po prawej stronie, wypełnioną do wyrównania pasków. Jednak co najmniej jedna komórka ma tylko jedną spację po prawej stronie.
Przypadki testowe
Input:
[["Hello", "World", "!!!"],["aa", "bbbbbbbbb", "CcC"], ["Pyth", "CJam", "GolfScript"]]
Output:
+-------+-----------+------------+
| Hello | World | !!! |
+-------+-----------+------------+
| aa | bbbbbbbbb | CcC |
| Pyth | CJam | GolfScript |
+-------+-----------+------------+
Przykład przesłania
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;
}
}
To jest golf golfowy , więc wygrywanie z najmniejszą ilością bajtów wygrywa!
Odpowiedzi:
CJam, 58 bajtów
Czy ktoś zna sztuczkę golfa w CJam?
źródło
vim,
139138134Akceptuje dane wejściowe w postaci pokazanej w przypadkach testowych. Może lub nie może być ważne, gdyż opiera się na ciągu wejściowego nie zawierającej żadnych
"
,,
,]
lub|
znaki.Jeśli dane wejściowe muszą zawierać
]
s,:%s/]/\t./<cr>
można je zastąpićqe$s<Tab>.<esc>j@eq@e
2 dodatkowymi znakami. Nie ma łatwego sposobu",|
na wprowadzenie danych wejściowych.Musi być uruchomiony w środowisku Unix, ponieważ opiera się na
column
narzędziu wiersza poleceń.Nieco przestarzałe wyjaśnienie (przez jedną wersję, ale było to tylko trochę przestawienie):
Dzięki smpl za bajt!
źródło
:set
go:se
.JavaScript (ES6), 210
212 219Edytuj 2 bajty zapisane thx @ Neil
TEST
źródło
a=>(
?(c,i)=>s[i]>(l=c.length)?0:s[i]=l
to chyba dwa bajty.Python 2, 190
To rozwiązanie wykorzystuje wyrażenia listowe i wyrażenia generatora. Akceptuje listę list i zwraca ciąg znaków w wymaganym formacie.
Kod przed minifikatorem:
które wyjścia:
źródło
from tabulate import*;a=input();print tabulate(a[1:],a[0],'psql',numalign='left')
MATLAB,
244 239 229226Wyjaśnienie do naśladowania.
Przypadek testowy:
Wejście:
Wynik:
źródło
Ruby,
129126127126 126 znakówPrzykładowy przebieg:
źródło