Задача проверки строки на принадлежность к множеству палиндромов. Палиндром может быть словом, выражением, набором символов, все символы кроме букв (любого алфавита) и цифр считаются некорректными.
В репозитории находятся четыре функции, которые решают эту задачу. Две основаны на итерации указателей в while-цикле, другие две - на итерации в for-цикле.
Утвреждается, что while-цикл явлеятся более оптимальным решением.
initial- функции, о которых шла речь во время обсуждения. optimized - функции, доработанные мной после построения benchmark-а.
Ради облегчения поиска узких мест на входные данные наложено несколько ограничений:
- все буквы представленны в нижнем регистре
- единственный символ, который исключается из сравнения - пробел
- lite - сравнение символа с пробелом
- heavy - поиск вхождения символа в массив недопустимых символов
- regexp - проверка регулярным выражением на букву латинского алфавита
- isletter - проверка методом сравнения приведенных к нижнему регистру букв (будут совпадать для большинства алфавитов)
- npm i - ставим benchmark, lodash и minimist
- npm test - проверка методов на корректность
- npm start - запуск базового бенчмарка по массиву больших вариантов с легкой проверкой на корректность, все варианты корректны
- --data=%file_name% - указать свой файл входных данных
- --cheker=%function_name% - указать имя функции для проверки корректности символа (из пердложенных выше)
node .\index.js --checker=regexp --data=./data-small.json