কাজটি হল একটি প্রদত্ত অ্যারের জন্য ascii টেবিল প্রদর্শন করা।
ইনপুট
ইনপুটটি 2 ডি ম্যাট্রিক্স। ম্যাট্রিক্সের সারির দৈর্ঘ্য একটি অ্যারের দৈর্ঘ্যের সাথে সমান। বিকল্পভাবে, আপনি প্রথম সারিতে 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;
}
}
এটি কোড-গল্ফ , তাই সর্বনিম্ন পরিমাণ বাইটের সাথে জমা দেওয়া!