Pull to refresh

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

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

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

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

UPD: Спасибо хабраюзеру Athari за список работающих решений, составленный с помощью StackSort:

Работают ответы:
stackoverflow.com/questions/12137690/javascript-sort-sparse-array-keep-indexes#12137767
stackoverflow.com/questions/14761032/infinite-recursion-in-javascript-quicksort#14761203
stackoverflow.com/questions/8175093/simple-function-to-sort-a-json-object-using-javascript#8175221
stackoverflow.com/questions/9280360/javascript-function-returning-unique-values-sorted-by-count#9280565

Частично работают ответы:
stackoverflow.com/questions/1359761/sorting-a-javascript-object#1359808

Не работают ответы (среди запустившихся и вернувших массив):
stackoverflow.com/questions/4833651/javascript-array-sort-and-unique#4833835
stackoverflow.com/questions/5326880/sort-array-keys-by-value#5327363

Пройдено 6 страниц, потом выдалось: «Out of answers from StackOverflow!»

Ко всем ответам сильно заплюсованные комментарии про StackSort. :)
Tags:
Hubs:
+102
Comments 26
Comments Comments 26

Articles