2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2, 3, 4  След.
 
 Перевёртыш строки на JavaScript
Сообщение14.07.2018, 10:15 
Аватара пользователя


01/12/11

8634
Обязательно ли использовать вспомогательный массив для переворачивания строки?
Задание такое:
Обучающий сайт писал(а):
Reverse the provided string.

You may need to turn the string into an array before you can reverse it.

Your result must be a string.

Только вот у меня получилось безо всяких массивов:

Используется синтаксис Javascript
//Процедура, переворачивающая строку.
function reverseString(str) {
  var rts = ""; // rts - это str наоборот :)
    for (let i = str.length - 1; i >= 0; i--) {
        rts += str[i];
    }
  return rts;
}

console.log(reverseString("hello")); // Ну и проверочка, вроде, даёт то, что нужно...
 


И что любопытно, тест у них на сайте я прохожу с этой процедурой, хотя делаю не совсем то, о чём там просят.
Пожалуйста, помогите рабозраться.
Заранее благодарю!

 Профиль  
                  
 
 Re: Перевёртыш строки на JavaScript
Сообщение14.07.2018, 11:58 


21/05/16
4292
Аделаида
Ktina в сообщении #1326640 писал(а):
Только вот у меня получилось безо всяких массивов:

А при вызове str[i] вы не называете строку массивом?

 Профиль  
                  
 
 Re: Перевёртыш строки на JavaScript
Сообщение14.07.2018, 13:23 
Заслуженный участник


09/05/12
25179
Ktina в сообщении #1326640 писал(а):
Обязательно ли использовать вспомогательный массив для переворачивания строки?
Не обязательно, но Вы его используете. Смысл задания в том, чтобы обойтись только str без rts.

 Профиль  
                  
 
 Re: Перевёртыш строки на JavaScript
Сообщение14.07.2018, 14:48 
Аватара пользователя


01/12/11

8634
kotenok gav
Pphantom

Ну тогда вот так:

Используется синтаксис Javascript
function reverseString(str) {
  if (str === "") {
    return "";
  }  
 
     else {
       return reverseString(str.substr(1))+str.charAt(0);
     }
}

console.log(reverseString("Yardena"));
 

 Профиль  
                  
 
 Re: Перевёртыш строки на JavaScript
Сообщение14.07.2018, 15:09 


05/09/12
2587
Шик. А теперь хвостовой рекурсией (хотя по ES6 она и не оптимизируется браузерами, но по слухам Мозилла или какой-нибудь Сафари оптимизирует ее в порядке инициативы)

 Профиль  
                  
 
 Re: Перевёртыш строки на JavaScript
Сообщение14.07.2018, 15:15 
Аватара пользователя


01/12/11

8634
_Ivana в сообщении #1326698 писал(а):
А теперь хвостовой рекурсией ...

Что за зверь? С чем едят?

 Профиль  
                  
 
 Re: Перевёртыш строки на JavaScript
Сообщение14.07.2018, 15:20 
Заслуженный участник


09/05/12
25179
Ktina в сообщении #1326691 писал(а):
Ну тогда вот так:
Фактически это заметание мусора под ковер. Такой рекурсивный вариант приведет к созданию многочисленных экземпляров частей строки в промежуточных состояниях, т.е. памяти будет израсходовано больше, чем в первом варианте решения (причем ее объем будет квадратично зависеть от размера строки, что совсем плохо).

 Профиль  
                  
 
 Re: Перевёртыш строки на JavaScript
Сообщение14.07.2018, 15:22 


05/09/12
2587
Ktina в сообщении #1326701 писал(а):
Что за зверь? С чем едят?

С книжками, а в наш информационный век еще и под гугловым соусом.

 Профиль  
                  
 
 Re: Перевёртыш строки на JavaScript
Сообщение14.07.2018, 15:25 
Аватара пользователя


01/12/11

8634
_Ivana в сообщении #1326704 писал(а):
Ktina в сообщении #1326701 писал(а):
Что за зверь? С чем едят?

С книжками, а в наш информационный век еще и под гугловым соусом.

А зверушка-то оказалась вкусняшкой:

Используется синтаксис Javascript
function reverseString(str) {
    function proc(str, tail) {
        return str === '' ? tail : proc(str.substring(1), str[0] + tail);
    }
    return proc(str, '');
}

console.log(reverseString("Yardena"));
 

 Профиль  
                  
 
 Re: Перевёртыш строки на JavaScript
Сообщение14.07.2018, 15:33 


05/09/12
2587
Ну вот уже и тернарники пошли, динамика положительная, скоро может и до стрелочных функций дойдем, а там, глядишь, и ступим на дорогу в прекрасный мир ФП :D Но и замечания Pphantom хорошо бы съесть, про мутабельность/иммутабельность строк и структур данных вообще и модель памяти.

 Профиль  
                  
 
 Re: Перевёртыш строки на JavaScript
Сообщение14.07.2018, 16:55 
Заслуженный участник


09/05/12
25179
_Ivana в сообщении #1326708 писал(а):
Ну вот уже и тернарники пошли, динамика положительная, скоро может и до стрелочных функций дойдем, а там, глядишь, и ступим на дорогу в прекрасный мир ФП
Это, конечно, красивая перспектива, но умение решать тупые задачи тупыми же, но эффективными методами в реальном программировании зачастую важнее. :mrgreen:

 Профиль  
                  
 
 Перевёртыш строки на JavaScript
Сообщение14.07.2018, 16:58 
Аватара пользователя


01/12/11

8634
Pphantom в сообщении #1326717 писал(а):
...умение решать тупые задачи тупыми же, но эффективными методами в реальном программировании зачастую важнее. :mrgreen:

Прошу прощения за оффтоп, а что ещё важно в реальном программировании? А то так и буду учебные задачки для девятилетних девочек здесь постить, а хотелось бы хоть когда-нибудь от учебных перейти к "боевым".

 Профиль  
                  
 
 Re: Перевёртыш строки на JavaScript
Сообщение14.07.2018, 17:24 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
Ktina в сообщении #1326719 писал(а):
а что ещё важно в реальном программировании?
Результат :mrgreen:
Остальное - уже детали и нюансы.

 Профиль  
                  
 
 Re: Перевёртыш строки на JavaScript
Сообщение14.07.2018, 17:25 
Заслуженный участник
Аватара пользователя


16/07/14
9149
Цюрих
Опыт, сын ошибок трудных.

Вообще "реальное" программирование сильно отличается от учебного, олимпиадного, исследовательского и от себя самого (в разных местах оно сильно разное).
Чтобы научиться решать реальные задачи, нужно практиковаться решать реальные задачи. И тут вопрос в том, чем именно вы хотите заниматься.

Но в целом ИМХО сначала полезно разобраться с основами (например, что значит "сделать без дополнительной памяти"), а потом уже думать о реальных задачах.

 Профиль  
                  
 
 Re: Перевёртыш строки на JavaScript
Сообщение14.07.2018, 17:28 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
Ах да, среди прочих нюансов есть один действительно важный нюанс.
Нужно уметь понимать, в чем именно заключается результат. Казалось бы, такая очевидная вещь, но нет. Регулярно возникают баталии на тему "результат достигнут или еще нет".
Самое печальное, что заказчик работы (в широком смысле) и сам может толком не знать, чего он хочет. А вот программисту не знать этого нельзя.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 53 ]  На страницу 1, 2, 3, 4  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group