Сейчас доступна функция repeat для строки, можно и в одном цикле с итерацией равной половине входного параметра (для нечетного можно тоже условие описать) повторить нужно необходимое число раз. Если бы еще была доступна функция для отражения строки, тогда склеить ее с полученной.
|
j0hnik,
это был five o’clock для форумчан :) жаль что вы не успели в этот раз, не сомневаюсь, вы бы легко нашли решение ... :) |
<html> <head> <style> body{ font-size: 24px; line-height: 24px; text-align: center; } </style> </head> <body> <script> function fn(a) { for(var i=0, k = a/2-1, s = ['*'.repeat(a)+'\n']; i < k; i++) { s.push('*'+' '.repeat(i)+'*'+' '.repeat(a - 4 - 2 * i)+'*'+' '.repeat(i)+'*\n'); } document.write('<pre>'+s.join('')+s.reverse().join('')) } fn(14) </script> </body> </html> Была бы string.reverse(), упаковали половину в строку, присоединили к ней развернутую и готово. |
laimas,
:thanks: |
laimas,
fn(15) ??? Цитата:
|
рони,
я же писал - для четных, а для нечетных надо добавить проверку на четность и корректировать число итераций и количество повторений пробелов внутри, я так думаю. Мне же не надо устраиваться на работу, я тезис выдвинул, а кому охота руки размять, пусть правят. :D |
А нет, не только число итераций и пробелов, еще у развернутого массива нужно будет удалять первый элемент, вернее выгоднее последний удалить перед реверсом. Вроде бы так.
|
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> body{ font-size: 24px; line-height: 24px; text-align: center; padding: 0; margin: 0; } b{ width: 12px; display: inline-block; } </style> </head> <body> <script> function fn(a){ var str = ""; for (var i=0; i<a; i++) { for (var j=0; j<a; j++) str += (i==0||i==a-1||j==i||j+i==a-1||j==0||j==a-1)?"<b>#</b>":"<b> </b>"; str += "<br>"; } document.write(str); } fn(18); </script> </body> </html> |
j0hnik,
:dance: :victory: |
Для любого
<html> <head> <meta charset="utf-8"> <style> body{ font-size: 24px; line-height: 12px; text-align: center; } </style> <script> function fn(a) { var o = document.querySelector('pre'); if(a > 4) { for(var i=0, k = a & 1 ? Math.floor(a/2) : a/2-1, s = ['*'.repeat(a)+'\n']; i < k; i++) { s.push('*'+' '.repeat(i)+(!(a & 1) || i + 1 < k ? '*'+' '.repeat(a - 4 - 2 * i) : '')+'*'+' '.repeat(i)+'*\n'); } o.textContent = s.join('')+(a & 1 ? s.slice(0, -1) : s).reverse().join('') } else o.textContent = "Фиг вам!"; } </script> </head> <body> <input oninput="fn(this.value)" /> <pre></pre> </body> </html> |
Часовой пояс GMT +3, время: 18:49. |