Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Тестовое задание Yandex (https://javascript.ru/forum/misc/72457-testovoe-zadanie-yandex.html)

Alexandroppolus 30.01.2018 18:36

если я правильно понял, надо "схлопнуть" одинаковые символы, и указать их количество, если более одного.

var str = 'AAAADEEESSQQQQQQ';

var result = str.replace(/(.)\1+/g, function(m, c) { return c + m.length; });

alert(result);

MallSerg 30.01.2018 20:58

Так это уже тысячу раз обсуждалось. Сжатие по хафману хорошо работает. с построением дерева и расчета весов на узел. Можно еже добавить семейство алгоритмов LZMA и получим самый настоящий zip.

Цитата:

Сообщение от Alexandroppolus
если я правильно понял, надо "схлопнуть" одинаковые символы,

Это называется алгоритм RLE

Aetae 30.01.2018 21:20

А теперь с такой строкой, пожалуйста:
'AAAADEEESSQQQQ1111122QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ'
естесно с возможностью распаковать:)

j0hnik 30.01.2018 21:42

Aetae,
var str = 'AAAADEEESSQQQQ1111122QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ';
var result = str.replace(/(.)\1+/g, function(m, c) {return c + '('+m.length+')'});
alert(result);

Aetae 30.01.2018 22:56

j0hnik, вооот, уже разделители пошли, а на средне "шумном" - это приведёт не к сжатию а к увеличению.)
А ещё надо учитывать, что в строке могуть быть скобочки.)
Тащем архиватор - это вам не хухры-мухры.

Впрочем собес я получается тоже завалил: слишком много думаю. Есть тз, должен быть результат. Думать не надо. Любые доработки - за отдельные деньги.)

j0hnik 30.01.2018 23:08

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

Alexandroppolus 30.01.2018 23:33

именно. Алгоритм сжатия - это было бы задание дома сделать и прислать ответ. А если "на 15 мин в сраном блокнотике" - как раз простое схлопывание повторяющихся символов в строке только из букв. Ну и конечно, простое очевидное решение с регексом делается за минуту, хотя они, скорее всего, ожидали с циклом что-то..

laimas 31.01.2018 02:21

Цитата:

Сообщение от Alexandroppolus
хотя они, скорее всего, ожидали с циклом что-то.

Можно быть уверенным в этом, очевидное с regex не дает представления о возможностях мышления тестируемого. Хотя может быть и прокатило бы, и был бы зачет, но тогда впоследствии были бы проблемы.

ksa 31.01.2018 08:35

Цитата:

Сообщение от laimas
Завтра Яшка всем тут отказы напишет.

Пойдем в управдомы... :D

laimas 31.01.2018 12:22

Цитата:

Сообщение от ksa
Пойдем в управдомы...

Теплые места как всегда заняты, только дворником. )


Часовой пояс GMT +3, время: 06:57.