• Когда делать асинхронные запросы?

    @cloudz
    redux-thunk и redux-saga созданы для удобного поддержания транзакций, когда необходимо например обработать цепочку асинхронных запросов, + это все выносится в отдельный слой логики, позволяя сконцентрироваться на ней в одном месте, а на ui в другом
    Ответ написан
    Комментировать
  • Существует ли хороший сборник задач по javascript, чтобы прокачаться?

    Leia_Rukkola
    @Leia_Rukkola
    Врач, если есть необходимость - психиатр :)
    Если вы только в самом начале пути, попробуйте порешать задачи из этого учебника.
    learn.javascript.ru. Можно нажать галочку "Показать задачи" чтобы их было видно в карте учебника. Как по мне - отличные задачки для начинающих. Задачек много и они небольшие и на конкретную тему. Это значит что если задачу не решить не удается, то можно прочитать статью на эту тему.
    Ответ написан
    Комментировать
  • Где у меня ошибка?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Проблема в том, что числа повторений в задаче ОЧЕНЬ большие.
    Правильное решение должно не строить строку, а хранить ее в виде пар (символ, количество), как в RLE.
    Самое быстрое решение - хранить список таких пар (или 2 списка). Но проще, и должно проходить по времени другое решение: Можно просто хранить массив этих пар (или 2 массива, один для символов, другой - для количества повторения).

    Позиция курсора тут будет храниться двумя числами - в какой группе в массиве он сейчас и где он внутри группы. При перемещении сначала увеличьте или уменьшите позицию внутри группы. Если стало -1 или слишком большим, то переходите к следующей или предыдущей группе. Если таких нет, откатывайтесь на границу.

    При вставке надо разбить текущую группу на 2 (если вы не на границе между группами) и добавить новую группу. Это вставка в центр массива двух элементов. Не знаю, как это на js реализуется, но точно можно. На худой конец, вставляете пустые элементы в конец массива и перемещаете нужные элементы на 1-2 позиции циклом с конца к началу. Но скорее всего, есть какая-то встроенная конструкция.

    Есть оптимизация - если вставляемый символ такой же, как текущая группа (или предыдущая, если вы на границе), то просто прибавляйте новое количество к повторениям в группе.

    В конце нужно для каждой позиции пройтись по массиву групп, пока не отсчитаете нужное количество символов. Если слишком медленно, то можно M чисел отсортировать и потом одним проходом по массиву групп с указателем в массиве запросов найти все ответы (если текущая позиция-запрос левее текущей группы, переходим к следующей позиции, если текущая позиция в текущей группе - мы нашли ответ).
    Ответ написан
    Комментировать
  • Где у меня ошибка?

    Robur
    @Robur
    Знаю больше чем это необходимо
    массив arr - это входные данные заключенный в массив


    длина текста не превысит 1000000000


    Ограничение по памяти: 256 Мб


    В качестве дополнительного задания найдите взаимосвязь между этими тремя предложениями ;)
    не говоря уже о том что вы потом с этим массивом делаете.
    Ответ написан
    2 комментария
  • Как понять этот код?

    wapster92
    @wapster92 Куратор тега JavaScript
    result *= base;
    // расшифровка для зелени
    result = result * base;
    
    console.log(result); // а это вообще выдаст undefined, если конечно такая переменная была где-то создана в скрипте в не функции. Читай области видимости

    Что там еще может быть не понятно, я даже хз.
    Ответ написан
    Комментировать
  • Как понять этот код?

    Zoominger
    @Zoominger
    System Integrator
    Серьёзно? Это же код возведения в степень.
    Ответ написан
    1 комментарий