Вопрос синтаксиса при добавлении символа в определенную позицию строки.
Друзья, я хоть и ИТ, но не кодер. Причем от слова "совсем" - это о JS.
Брат занимается на курсах по JS, подкинул тут задачек. Но что то я туплю. Такая задача уже как то раз проскакивала по С++, но по JS - вроде нет. Я проблем, как таковых, алгоритмических не вижу. Задача - построить треугольник из любых символов. Возьмем, допустим, *, но треугольник должен быть равнобедренным... Высота, читай количество строк, задается пользователем. Я вот отдельно от него сижу - почитываю книжки... Как раз на работе сегодня... И вот что у меня получилось.
var n = prompt ('Задайте высоту'); //задает пользователь высоту. Можно проверить на целое, положительное число - но это не важно.
for (var line = "*"; line.length <= 2*n; line += "**") //начинаем с одного символа, прибавляя с каждым новым шагом еще по 2. Т.е. 1-3-5-7-9- и так далее
document.write(line + '<br/>'); //Вывели
- получили, в случае 5 высоты.* *** ***** ******* ********* Понятно что нужно в начало строки подставлять пробел по принципу - каждая строка должна иметь в начале количество пробелов по формуле количество строк (т.е. высота) - 1 - так? Точнее немного не правильно сказал. n-1 это количество пробелов для 1 строки. Для каждой последующей оно должнло уменьшаться на 1. Так вот, как в цикле JS это указать. Вроде пишу конструкциями, вроде правильными - но что то не удается. Помогите тупящему админу.... :) С другой стороны - можно ведь это как то массивом сделать? К примеру... |
JMnemonick,
так добавьте переменную для пробелов через запятую и выводите пробелы + line |
Так приблизительно так и делал....
Что то вроде вот такого...
var n = prompt ('Укажите высоту треугольника в целых числах');
for (var space = " "; space.length >= 2*n; space -= " ")
for (var line = "*"; line.length <= 2*n; line += "**")
document.write(space + line + '<br/>');
Что и где делаю не так - не понятно... |
JMnemonick,
<script>
var n = 7;
for (var line = "*", space = new Array(n).join("\u2007"); line.length <= 2*n; line += "**", space = space.slice(1)){
document.write(space+line + '<br/>');
}
</script>
|
B tрони,
Спасибо за подсказку. Сейчас попытаюсь переварить информацию. В общем - все понятно довольно таки... Линия из * создается понятно. Для пробелов задаем массив и.... join - вполне понятно. А вот ("\u2007") это что? Если не сложно, проясните? Спасибо заранее. |
JMnemonick,
Пробел, равный по ширине цифрам |
И если не сложно...
Для меня проясните, почему не работает вот такая конструкция?
var n = prompt ('Укажите высоту треугольника в целых числах');
for (var line = "*", space = new Array(n).join("\u2007"); line.length <= 2*n; line += "**", space = space.slice(1)){
document.write(space+line + '<br/>');
}
С юникодом понял - спасибо. |
И если есть возможность - посоветуйте хорошие методические материалы по JS, а то что то зацепило...
Почти стыдно стало за то что так торможу... :) |
Цитата:
var n = +prompt ('Укажите высоту треугольника в целых числах'); учебник ссылка вверху, остальное практика и интерес. |
JMnemonick,
преобразование-к-числу |
Спасибо огромное...
|
JMnemonick,
prompt Цитата:
|
Цитата:
repeat |
Ага.... познавательно про repeat... :)
Когда этот метод в продакшн уйдет? |
JMnemonick,
вопрос к разработчикам стандарта js. |
| Часовой пояс GMT +3, время: 08:41. |