У меня возникают ошибки с границами? - PullRequest
0 голосов
/ 02 мая 2020
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 пробелами, но не со сторонами.

Я не знаю, что я делаю неправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...