Нужно привести к такому виду:
> *****
****
***
**
*
**
***
*****
******
где n7 это число звездочек.Не работает 3й цикл.
function task7(n7) {
for (var i = 0; i < n7; n7--) {
for (var j = 1; j < n7; j++) {
process.stdout.write("*");
};
console.log('*');
};
var result = "";
for (var k = 1; k < n7; k++) { // не работает, хотя отдельной функцией работает.
result = `${result}*`;
console.log(result);
};
}
task7(n7);
Ведь первые два цикла проходят и доходит очередь до 3го, но он даже не стартуется. Где нарушена моя логика?
Когда дело доходит до 3го цикла n7 равно 0. Соответственно, цикл не запускается
Ваше же решение чуть короче:
i = (n - 1) * 2 + 1 и в каждой итерации цикла печатаем звёздочку len-раз с помощью метода строки repeatlen += vector== 1 && (vector = 1)(function(n){
for (
let i = (n - 1) * 2 + 1,
len = n,
vector = -1;
i--;
) {
console.log('*'.repeat(len));
(len += vector) == 1 && (vector = 1);
}
})(4);
Можно сделать ещё проще, если найти формулу зависимости числа звёздочек от номера строки. Для этого повернём голову на 90 градусов вправо глядя на ваш вопрос. Получится примерно такая картинка:
В глаза бросаются оси OX и OY. Проведём по макушкам звёздочек две прямые: первая из точки {0, 5} в {4, 1}, а вторая из {4, 1} в {8, 5}. Теперь найдём Уравнение прямой, проходящей через две заданные несовпадающие точки для каждой из них.
(y1 - y2) * x + (x2 - x1) * y + (x1 * y2 - x2 * y1) = 0
Для первой получаем y = 5 - x, для второй y = x - 3, где x - номер итерации в вашем цикле, а y - число звёздочек для repeat-функции. Осталось добавить в цикле проверку на пересечение середины графика. До него используете первую формулу, после - вторую.
Продвижение своими сайтами как стратегия роста и независимости