#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)
Комментариев нет:
Отправить комментарий