Ну давайте я покритикую:
возьмем
файлик
1) вы не разобрались как объявлять методы у прототипов с новой нотацией `class`:
class Travelsort {
constructor() {}
sortTickets(tickets) {}
}
2) вы не умеете пользоваться исключениями.
if (!Array.isArray(cards)) {
throw new ValueError('Wrong input');
}
3) использование let там где должен использоваться const
4) в принципе использование переменных там где их быть не должно
5) вы зачем-то реализовали свою функцию сортировки, я не увидел в требованиях отсутствия возможности использовать старый добрый Array.prototype.sort
6) Общие замечания по кодинг стайлу. snake_case там где должен быть camelCase, пишите с большой буквы то что должно быть с маленькой и т.д.
7) нарушения принципа единой ответственности. У вас объеткт умеет и сортировать и писать куда-то. Это категорически плохо.
8) Если исправить 7-ой пункт то наш класс превращается просто в функцию.
Далее... берем следующий
файлик
1) если вы пишите комментарии к таким маленьким кускам кода - стало быть у вас хромает именование вещей. Все должн быть понятно просто из названий методов/функций/переменных. При работе в команде над серьезными проектами это немаловажно, ибо код чаще читают чем пишут и экономить нужно именно это время.
2) вы зачем-то тут в прототип объекта строки впихиваете функции для парсинга CSS. Таким образом мы нарушаем принцип единой ответственности. Да и в целом расширять без надобности прототипы объектов как-то не ок.
Чуть дальше проскролил - вы пытаетесь расширить прототип строк для того что бы добиться API jquery? ух, батенька.
3) очень много дублирования.
4) очень плохо с protected variations.
Справедливости ради, ваш код входит в категорию ">50% JS кода", так что не расстраивайтесь. Просто для работы в яндексе нужен чуть более высокий уровень и понимание вещей.