function printArt(arr){
for (let index = 0; index < arr.length; index++) {
for (let j = 0; j < arr[index].length; j++) {
let char = (arr[index][j].toString().trim() === '') ? '' : arr[index]
[j].toString().trim();
process.stdout.write(char);
}
process.stdout.write('\n');
}
return true;
}
let art1 = [
['.', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-',
'-', '-', '-', '-', '-',
'-', '-', '-', '-', '-', '-', '-', '-', '-', '.'],
['|', '\\', '\\', '/', '/', '\\', '\\', '/', '/', '\\', '\\', '/', '/',
'\\',
'\\', '/', '/', '\\',
'\\', '/', '/', '\\', '\\', '/', '/', '\\', '\\', '/', '/', '|'],
['|', '/', '/', '\\', '\\', '/', '/', '\\', '\\', '/', '/', '\\', '\\', '/',
'/', '\\', '\\', '/',
'/', '\\', '\\', '/', '/', '\\', '\\', '/', '/', '\\', '\\', '|'],
['|', '\\', '\\', '/', '/', '\\', '\\', '/', '/', '\\', '\\', '/', '/', '\\',
'\\', '/', '/', '\\',
'\\', '/', '/', '\\', '\\', '/', '/', '\\', '\\', '/', '/', '|'],
['|', '/', '/', '\\', '\\', '/', '/', '\\', '\\', '/', '/', '\\', '\\', '/',
'/', '\\', '\\', '/',
'/', '\\', '\\', '/', '/', '\\', '\\', '/', '/', '\\', '\\', '|'],
['|', '\\', '\\', '/', '/', '\\', '\\', '/', '/', '\\', '\\', '/', '/', '\\',
'\', '/', '/', '\', '\', '/', '/', '\', '\', '/', '/', '\', '\', '/', '/', '|'], ['|', '/', '/', '\', '\', '/', '/', '\', '\', '/', '/', '\', '\', '/', '/', '\', '\', '/', '/', '\ ',' \ ',' / ',' / ',' \ ',' \ ',' / ',' / ',' \ ',' \ ',' | '], [' | ',' \ ',' \ ',' / ',' / ',' \ ',' \ ',' / ',' / ',' \ ',' \ ',' / ',' / ',' \ ', '\', '/', '/', '\', '\', '/', '/', '\', '\', '/', '/', '\', '\ ',' / ',' / ',' | '], [' | ',' / ',' / ',' \ ',' \ ',' / ',' / ',' \ ',' \ ',' / ',' / ',' \ ',' \ ',' / ',' / ',' \ ',' \ ',' / ',' / ',' \ ',' \ ', '/', '/', '\', '\', '/', '/', '\', '\', '|'], ['\' ',' - ',' - ' , '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', ' - ',' - ',' - ',' - ',' - ',' - ',' - ',' - ',' - ',' - ',' - ',' - ',' - ' , '-', '\' ']];
console.log (printArt (art1));
Теперь я пытаюсь добавить фрейм, как это. Напишите функцию с именем addFrame. это принимает три (3) параметра: imageArray, borderDistance и borderChar. (a) imageArray - это двумерный массив любого измерения, содержащий художественное «изображение» ASCII. (b) borderDistance - это положительное ненулевое целое число, которое определяет расстояние (или позиции), на которое будет помещена граница от исходного изображения. Например, если пользователь указывает значение 3, то граница должна быть размещена в 3-й позиции от края изображения. Пример приведен ниже. (c) borderChar - это отдельный символ, который будет использоваться для декоративной рамки вокруг изображения. Если пользователь предоставляет пустую или пустую границу, используйте значение по умолчанию одной звездочки (*). Если пользователь предоставляет строку длиной более 1 символа, обрежьте все пробелы в начале и конце и используйте только первый символ в обрезанной строке.
function addFrame(imageArray, borderDistance, borderChar){
let newImage = [] //new image
let height = imageArray.length + (2*borderDistance);
let width = imageArray[0].length +( 2 * borderDistance);
//go through rows to
for(let row = 0; row<height; row++){
let new_row = []; //new row
//these rows are border char
if(row==0 || row == height-1){
//fill row with border
for(let col = 0; col<width; col++){
new_row.push(borderChar);
}
}
//these rows are just spacer characters
else if(row < borderDistance || row >= height-borderDistance){
//fill row with spacer
for(let col = 0; col<width; col++){
new_row.push(" ");
}
}
//otherwise we also have original image pixels to add
else{
//get original row
let original_row = imageArray[row-borderDistance];
//traverse columns
for(let col = 0; col< width; col++){
//these columns are border chracters
if(col == 0 || col == width-1){
new_row.push(borderChar);
}
//these columns are spacers
else if(col < borderDistance || col >= width-borderDistance){
new_row.push(" ")
}
//these columns need to pull from original image
else{
//add original image pixel
new_row.push(original_row[col-borderDistance])
}
}
}
//add row to new image
newImage.push(new_row);
}
//return our new image
return newImage;
}
console.log (printArt (addFrame (art1,3, ' ^ ')));
Я могу получить только верхнюю и нижнюю границу с 3 пробелами, но не со сторонами.
Я не знаю, что я делаю неправильно?