Страницы

Поиск по вопросам

четверг, 19 декабря 2019 г.

Ромб в консоли с помощью javascript

#javascript


Пытаюсь вывести ромб в консоли таким способом:



var 
    i,
    j,
    size = 10,
    board = '',
    mboard = '';

for(i = 0; i< size/2; i++){
  board += '#';
  console.log(board);
}

for(j = size/2; j > 0; j--){
  mboard += '#';
  console.log(mboard);
}




и не могу понять как подправить код, чтобы выводился именно ромб?

Должно бы быть вот как:

  *
 * *
* * *
 * *
  *


Или хотя бы так:

*
**
***
**
*


понять бы алгоритм.
    


Ответы

Ответ 1



Решение простейшее. var s, i, j, size = 10, board = '', out = ''; for (s = 0; s< (size/2)-1; s++){ out += ' '; } for(i = 0; i< size/2; i++){ board += '# '; console.log(out, board); out = out.substring(0, out.length - 1); } for(j = size/2; j > 0; j--){ out += ' '; board = board.substring(0, board.length - 2); console.log(out, board); }

Ответ 2



Решение на чистейшем JS (лёгкая наркомания). var i, j, size = 5, boardeven = '', boardodd = ''; function changeVal(s1, c, pos){ return s1.substr(0, pos) + c + s1.substr(pos + 1); } for(i = 0; i< 2*size +1;i++){ boardeven +=' '; boardodd +=' '; } for(i = 0; i< size/2; i++){ boardodd = changeVal(boardodd,'#',size - 2*i); boardeven = changeVal(boardeven,'#',size - 2*i - 1); boardodd = changeVal(boardodd,'#',size + 2*i); boardeven = changeVal(boardeven,'#',size + 2*i + 1); console.log(boardodd); console.log(boardeven); } for(i = Math.floor(size/2) ; i>=0; i--){ console.log(boardodd); boardodd = changeVal(boardodd,' ',size - 2*i); boardeven = changeVal(boardeven,' ',size - 2*i - 1); boardodd = changeVal(boardodd,' ',size + 2*i); boardeven = changeVal(boardeven,' ',size + 2*i + 1); console.log(boardeven); }

Ответ 3



Немного творчества: const getRombus = (side = 3, sign = '*', fill = ' ') => (side = side * 2 - 1, Array(...Array(side)).map((_, i, __, ___, ____) => (____ = Math.round(side / 2) > i ? side - (side - i) + 1 : side - i, ___ = sign.repeat(____), __ = Array(...Array(___.length)).reduce(a => a += sign + ' ', '').trim(), _ = fill.repeat(Math.round(side / 2) - ___.length), _ + __ + _)).join("\n")); console.info(getRombus()); console.info(getRombus(6, '#', '.'));

Ответ 4



Ещё немного творчества. const r = (n) => Array(n*2-1).fill().map((_, i) => ( i < n ? ('-'.repeat(n-i-1)+ '*'.repeat(2*i+1)+ '-'.repeat(n-i-1)) : ('-'.repeat(-(n-i-1))+ '*'.repeat(4*n-2*i-3)+ '-'.repeat(-(n-i-1))) )).join("\n"); console.log(r(5)); const line = (n, s=2) => ( '-'.repeat(s-n)+ '*-'.repeat(n)+'*'+ '-'.repeat(s-n)+'\n'); const r = (s, n=0, N=Math.abs(n)) => ( N==s? (line(0, s)) : n>0 ? (line(s-N, s)+r(s, n+1)) : n<0 ? (r(s, n-1)+line(s-N, s)) : (r(s, n-1)+line(s, s)+r(s, n+1))) console.log(r(9))

Ответ 5



function fn(n){ for(var i=1; i<=n; i++){ var str=''; for(var j=n-i; j>0; j--){ str+=' '; } for(var j=1; j<=i*2-1; j++){ str+='*'; } console.log(str); } for (var i=2; i<=n; i++){ var str=''; for (var j=0; j0; j--){ str+='*'; } console.log(str); } } fn(5)

Комментариев нет:

Отправить комментарий