Сортировка методом StackSort

в 19:33, , рубрики: eval() is evil, Алгоритмы, коллективный разум, краудсорсинг, ненормальное программирование, метки:

Несколько дней назад на xkcd.com был опубликован комикс о неэффективных методах сортировки. Alt-текст к нему рассказывал о сортировке методом StackSort, который заключается в том, чтобы скачать со StackOverflow блоки кода, которые можно найти по запросу «сортировать список» и запускать один за другим, пока не найдётся работоспособный вариант. Бред? Ещё бы не бред! Встречайте на Гитхабе реализацию StackSort на JavaScript.

Скрипт скачивает со StackOverflow ответы с самым высоким рейтингом на вопросы, помеченные тегами «sort» и «javascript», и пытается выполнить последний блок кода в ответе, предполагая, что это и есть окончательный вариант алгоритма. Да, именно так, берёт из интернета кусок кода и делает eval(), так что поосторожнее! Впрочем автор попытался сделать всё возможное, чтобы алгоритм был безопасным — он берёт код только из ответов, которые помечены как принятые, и только из тех, которые были опубликованы раньше появления комикса на XKCD, чтобы кто-нибудь специально не подложил вредоносный код.

Если блок кода выполняется без ошибок и возвращает массив, результат показывается пользователю. Если он неправильный, можно пробовать дальше. Алгоритм работает как с числами, так и со строками и объектами JSON. Что до эффективности — в браузере Chromium под Ubuntu список из нескольких чисел сортируется 5-10 секунд (в Firefox у меня StackSort не заработал). Медленно, зато очень масштабно и универсально, с использованием коллективного разума всего Интернета.

Автор: ilya42

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js