Git Product home page Git Product logo

js-assignments's People

Contributors

aorgish avatar demns avatar dzmitrybudzko avatar mtratsiuk avatar quozd avatar

Watchers

 avatar

js-assignments's Issues

03-date-tasks.js

parseDataFromRfc2822 и parseDataFromIso8601 проходят тесты только потому что тесты кривоватые.

Функции просят вернуть объект Date, но возвращаются миллисекунды Эпохи, ибо Date.parse возвращает их.

06-conditions-n-loops-tasks.js

findFirstSingleChar может быть реализовано за O(N), а не за O(N^2). Кроме того, str.indexOf(value) выглядит не очень в цикле по символам, можно завести счётчик и не выяснять этого каждый раз.

reverseInteger — можно не гонять число в строку и обратно заиспользовав немного математики (остаток от деления на 10 даёт самую правую цифру, деление на 10 и округление сдвигает число вправо). То же и к getDigitalRoot.

В getDigitalRoot использован китайский цикл на 2. Не проходит тест, если передать, например, 991. Сначала получает 19, переходит к второму этапу, получает 10. Должно продолжить и получить 1.

isBracketsBalanced — слишком много дублирующегося кода.

04-arrays-tasks.js

getMovingSum имеет вычислительную сложность больше чем O(N) из-за просмотра массива от начала до текущего элемента каждый раз, как мы меняем элемент. Это можно сделать эффективнее.

В propagateItemsByPositionIndex я не понимаю, зачем в .fill(elem, 0, i*2+1) передаются второй и третий аргументы, если нам нужно заполнить массив целиком. Более того, i*2+1 это больше, чем длина массива.

get3TopItems работает за O(N log N), может за O(3 * N) → O(N).

Можно не создавать лишний массив.. Ещё здесь, здесь.

Линейным поискам в массивах нужно предпочитать поиски в хештаблицах. Видел ещё здесь.

В getIdentityMatrix двойной map излишен, достаточно пройтись по диагонали, а не по всем элементам матрицы.

В distinct сложность O(N^2) вместо O(N) из-за постоянной пробежке по массиве при каждом элементе.

getAngleBetweenVectors

https://github.com/RumataDeEstor/js-assignments/blob/44ed3159cb9acbedd6f517837c5b0dcfc2e64e80/task/02-numbers-tasks.js#L114-L116

В этом модуле задачи не на математику, а на знание стандартных математических методов javascript :) Есть стандартный метод, с помощью которого это задание решается просто, не надо изобретать велосипед.

07-yield-tasks.js

get99BottlesOfBeerif (bottle == 1) можно вынести за while сделав while (bottle > 1), if (bottle == 0) тогда тоже пропадает, в цикле остаётся только два yield'а и один декремент.

Этот .pop можно сделать выше при присваивании, ничего не изменится, но на строку меньше.

09-functions-n-closures-tasks.js

getPolynom выглядит по-китайски. Не работает на тестах с четырьмя и более аргументами. Можно сделать универсальным.

memoize сразу же выполняет переданную функцию, должно только после первого вызова сконструированной.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.