• Какова сложность алгоритмов (Big(O)) встроенных JS методов?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    1. Сложность зависит алгоритма, используемого в конкретной реализации. Потому в V8 сложность может быть совсем не такой, как в JS-движке Firefox.

    2. Смотреть исходный код. Тем более, что он открыт.

    Добавление к строке по одной букве - это повторение N раз конкатенации строк. Потому сложность и получается O(N**2). Никакого отношения к оценке вычислительной сложности конкатенации это пример не имеет.
    В реальном мире сложность конкатенации строк длинной N и M даже в худшем случае не превосходит O(N + M).
    Ответ написан
    Комментировать
  • Какова сложность алгоритмов (Big(O)) встроенных JS методов?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Похоже документация не указывает сложность методов. Видимо, никто не ожидает от js кода производительности =)

    Тут ситуация еще осложняется тем, что стандарт не содержит требований по сложности. Поэтому одни и те же функции в разных браузерах, теоретически, могут иметь разную сложность.

    Возможно, можно нагуглить что-то по конкретным методам.

    По описанию метода concat, он возвращает новую строку не меняя аргументы. Поэтому, скорее всего, он работает за линейную сложность от общей длины операндов. Вряд ли там используется rope.
    Ответ написан
    2 комментария
  • Как работает эта часть алгоритма?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Пусть S = 1 + 2 + ... + n.
    Тогда, по условию задачи,
    a · b = S - a - b
    Зафиксируем a и решим уравнение относительно b:
    a · b + b = S - a
    (a + 1) · b = S - a
    b = (S - a) / (a + 1)
    Вот и получилась ваша формула.
    Ответ написан
    1 комментарий
  • Как тут работает позитивная опережающая проверка?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    (?=) ищет, начиная с текущей позиции в строке, но по результатам поиска текущую позицию не меняет.
    Соответственно, ^ означает, что поиск начинается с начала строки.
    И если первый (?=) завершается успехом, срабатывает второй (?=) - опять с начала строки, а потом и третий - тоже с начала строки.
    А после завершения успехом всех трёх (?=), срабатывает - опять же, с начала строки - [a-zA-Z\d]{6,}$

    P.S. Конструкция X(?=Y) означает, что сначала обычным образом ищется X, после чего (?=Y) начинает поиск с текущей позиции - сразу после найденного X.
    Ответ написан
    1 комментарий
  • Как тут работает позитивная опережающая проверка?

    WblCHA
    @WblCHA
    Тут соль в проверки на наличие каждого из пула символов. Это можно переписать так:
    if(
    	/[a-z]/.test(str)
      && /[A-Z]/.test(str)
      && /\d/.test(str)
      && /^[a-zA-Z\d]{6,}$/.test(str)
    )
    Ответ написан
    1 комментарий
  • Почему VSCode перестал отображать палитру цветов?

    ae_ph
    @ae_ph Автор вопроса
    I'm a owl )
    Решение проблемы..
    Нажать F1 и вставить setting.json
    Было прописано "editor.hover.enabled": false, — Это удаляет подсказки всплывающие.
    Как оказалось ко всему прочему эта функция отключила мне палитру цветов.
    Это очень странно, ведь раньше она её не затрагивала, а касалась лишь подсказок.
    P.S. (подсказки это когда при наведении на любой тег, рядом всплывает окно).
    Ответ написан
    Комментировать
  • Как реализовать свою JS библиотеку и предоставить API?

    @bkosun
    Вам нужно написать библиотеку таким образом, чтобы другие программисты могли удобно использовать ее в своих приложениях не вникая в то, как реализована ее функциональность.

    API (программный интерфейс приложения, интерфейс прикладного программирования) (англ. application programming interface, API [эй-пи-ай][1]) — описание способов (набор классов, процедур, функций, структур или констант), которыми одна компьютерная программа может взаимодействовать с другой программой.


    API определяет функциональность, которую предоставляет программа (модуль, библиотека), при этом API позволяет абстрагироваться от того, как именно эта функциональность реализована.


    Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API — это множество «ручек», которые доступны пользователю данного ящика и которые он может вертеть и дёргать.


    https://ru.wikipedia.org/wiki/API
    Ответ написан
    4 комментария