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

    Несколько дней назад на 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. :)
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 26

      +12
      Так и вижу следующий шаг, где парсер разобьет задачу «сделай мне вот эта!» на блоки и воспользуется коллективным разумом для решения каждого из них. Долго, неэффективно, но с каждым разом все больше будет появляться библиотек с готовым кодом, универсальных блоков и пр., пока машина не скажет «Да. Теперь Бог есть!»
        +10
        А результат работы надо заливать обратно на StackOverflow, чтобы следующие запуски могли это повторно использовать.
        +4
        На самом деле интересная идея, однажды так и появится что-то, что станет прототипом искусственного разума.
          +5
          Watson уже взял идею на вооружение.
          +2
          Парадокс: Randall Munroe (автор xkcd) — один из наиболее крэйзи-гениальных людей современности. А креативным директором Intel всё равно является Will.I.Am (картинка 1 Мб)…
          • UFO just landed and posted this here
        • UFO just landed and posted this here
            +16
            Незаслуженно забыт Sleep Sort. :)
              +8
              СлипСорт отличный, но как же обезьянья сортировка? ru.wikipedia.org/wiki/Bogosort Он восхитительно неэффективен!
              +6
              Программирование будущего: «Siri, отсортируй мне пожалуйста список abcList».
                +8
                а если забудешь сказать «пожалуйста», отсортирует пузырьком
                +5
                Осталось все-таки написать скрипт, который автоматически будет искать ошибку на stackoverflow по выводу компилятора и тексту программы)
                  +2
                  Надеюсь уже скоро будет кнопка «Сделать всё хорошо».
                    +1
                    Баг

                    Простите, неправильно понял суть алгоритма, удаляю коментарий.
                    • UFO just landed and posted this here
                        +1
                        Легально? Нет.

                        Кто-нибудь поймет, что делает сниппет и ответ будет изменен, а то и вовсе удален. А учитывая количество пользователей это будет быстро.
                        • UFO just landed and posted this here
                          • UFO just landed and posted this here
                          +1
                          Ко всему прочему, в описании внизу сказано, что ответы, данные после релиза комикса, отбрасываются. Плюс есть фильтр ключевых слов (как раз «cookie» там назван как пример). Так что скрипт хоть как-то защищен.
                            0
                            При достаточном количестве репы на SO можно редактировать любые вопросы и ответы, не только свои. Кажется, на 2К дают. Все юзеры с этим правом могут вставить код в один из ответов…

                            Проверяется только дата добавления ответа или дата редактирования тоже?
                          +2
                          Работают ответы:
                          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. :)
                            0
                            Можно еще сначала примеры массивов искать, а потом уже алгоритмы.

                            Only users with full accounts can post comments. Log in, please.