О код-боулинге:
В гольфе вы пытаетесь получить наименьшее количество баллов (самое маленькое приложение, самое элегантное и т. Д.). В боулинге вы пытаетесь получить самый высокий балл. Поэтому, если вы будете следовать, цель задачи Code-Bowling - сделать самый большой, самый ублюдочный, самый сложный в обслуживании кусок кода, который все еще отвечает требованиям задачи. Однако нет смысла делать источник длиннее просто ради него. Должно казаться, что добавленная длина была от дизайна, а не только от отступов.
Соревнование:
Создайте программу, которая сортирует список чисел в порядке возрастания.
Пример:
Вход: 1, 4, 7, 2, 5
Выход: 1, 2, 4, 5, 7
Код: Очевидно, что это не будет хорошим ответом, так как там не так много WTF.
function doSort(array $input) {
sort($input);
return $input;
}
Правила:
Здесь нет настоящих правил. Пока программа работает, имейте это в виду!
Помните: это боулинг, а не гольф. Цель состоит в том, чтобы сделать худший, самый ублюдочный код, который вы можете! Бонусные баллы за код, который выглядит хорошо, но на самом деле обманчиво злой ...
источник
sort(sort(sort(sort(sort(sort(myarray))))))
Гарантирует отличную сортировку!Ответы:
Сортировка по пользовательскому вводу. Что может быть хуже?
Смотрите живой пример
источник
Ах, элегантность Ruby ... self.permutation приводит к счетчику. Пока вреда нет. Невинно выглядящий .min однако всасывает этот перечислитель в массив. Размер этого массива увеличивается при увеличении количества элементов. Не говоря уже о том, что это разрушает прекрасный уже существующий сорт.
источник
Bogosort!
источник
O(2n random)
Perl Bubble Sort
Я собирался выглядеть так: «каждая строка выглядит как один и тот же фрагмент шума линии». Первая строка ввода (в STDIN) сообщает программе, сколько существует чисел, а следующие N строк содержат одно число, которое необходимо отсортировать.
источник
Универсальный многопоточный bogosort на Java
46 секунд, чтобы отсортировать 4 номера
Я думал, что это будет элегантно с поддержкой дженериков. Кроме того, многопоточность всегда хороша, поэтому я использую ее вместо рандомизации: эта программа генерирует один поток для каждого сортируемого числа. Каждый поток пытается вставить свой элемент в объект массива, и когда все элементы будут вставлены, программа проверит, отсортирован ли массив. Если нет, попробуйте еще раз. Конечно, эта вставка должна быть синхронизирована.
ElementInserter
Это будет класс, который мы используем для потоков. Этот класс содержит один элемент и пытается вставить его в свой
sortedArray
:sortedArray
Спортивный прямой метод вставки. Когда последний элемент был вставлен, он проверяет, отсортирован ли массив.
Основной метод
Разбирает аргументы командной строки как целые числа, создает новый массив и новый поток для каждого целого числа:
Тестовый забег
Время выполнения будет зависеть от исходного порядка элементов и реализации вашего планировщика. Это на двухъядерном 2,9 ГГц Intel i7 MacBook Pro:
источник
JavaScript (с анимацией!). 8172 символа Несколько часов для 6 номеров.
Нам нравится лотерея, верно? Похож на Bogosort от dan04, но использует физику и анимацию ...
Тем не менее, я использовал немного Google Closure Compiler для ... я не знаю. Но это выглядит ужаснее, верно?
Это как один из тех лотерейных колес, и каждый раз, когда он останавливается, он меняет номер на середину. Вы можете поиграть здесь: http://jsfiddle.net/VkJUE/5/ (чтобы понять, что я имею в виду)
Это работает, немного, за исключением того, что это может занять часы для 6 номеров. Тем не менее, я проверил его на 3 числах, и он отлично работает!
источник
Хотя я не могу отдать должное этому Java- коду, Smoothsort является хорошим примером компромисса между удобочитаемостью и производительностью:
(примечание: некоторые комментарии удалены для эффекта и для его сокращения; источник взят со страницы википедии, ссылки на которую приведены выше)
источник
F # «Я ненавижу функциональное программирование»:
источник
Рубин Метасорт
источник
Подпрограмма Cobol для сортировки таблицы целых чисел, гарантированно иметь более высокий WTF / мин, чем любой другой язык. В целях повышения производительности используется алгоритм быстрой сортировки:
источник
QwikSort
вместоQuickSort
? (т.е. ограничение длины или вы не можете использовать букву u в имени?) Потому что это сделало бы его еще более увлекательным: Phttp://www.jsfiddle.net/sAFMC/
источник
Быстрая сортировка Python с использованием лямбды
Что-то я написал в своем блоге:
Вот собственно сообщение в блоге
источник
Рубин
источник
С ++ (4409)
Некоторые вещи "плохие" об этой программе:
Действительно неряшливый. :) Я мог бы просто ввести числа напрямую, вместо разбора строки на числа.
Использует чрезмерные занятия. Я мог бы использовать и встроенные, но плохой кодер просто изобретал бы колесо.
Цикл для сортировки ужасно неэффективен. Я думаю, что это самый медленный способ, не делая его похожим на то, что я действительно пытался сделать это медленным. На самом деле, настоящая часть кода «sort» похожа только на 11 строк, включая фигурные скобки и разрывы строк.
источник
Это O (n * n!)
Он перебирает все перестановки списка и проверяет, отсортированы ли они. Это так ужасно, что сортировка всего 10 предметов занимает 17 секунд
источник
T-SQL
(SQL Server 2008 R2)
Естественно, с T-SQL вы используете «ORDER BY» для сортировки. Duhhh.
Видите "ЗАКАЗАТЬ"? Это прямо в объявлении курсора.
источник
Python- реализация Funnel Sort . Этот алгоритм на самом деле может иметь хорошую производительность кеша при правильной реализации, чего в данном случае, скорее всего, нет (однако, он сортирует правильно).
источник
Сортирует список 32-битных целых чисел. На самом деле это довольно эффективно для большинства обычных случаев:
Пример:
источник
источник
sort()
работает по ссылке и даже ничего не возвращает ...C ++ , не уверен, есть ли название для этого вида, но здесь идет
<ducks for cover/>
источник
Корпоративное решение (в псевдокоде):
источник
В Ruby - визуальное представление « Сортировка спагетти» , предназначенное для запуска в терминале с 80 столбцами:
Использование:
p sort (1..10).map{rand(100)}
источник
PL \ SQL - 109 строк
Это ответ на комментарий @ eBusiness в ответе @ steenslag. Это не служит никакой полезной цели.
Он имеет 4 этапа:
Как видите, это смешно ... Плохие вещи включают в себя:
Это довольно много, на самом деле, это должно быть очень быстро.
источник
И выбор языка и алгоритм должны быть объяснены.
Этот алгоритм называется медленной сортировкой. Я намерен выбить дерьмо из bogosort (тестировать случайные перестановки, пока он не отсортирован), потому что, хотя алгоритмически ужасно неэффективно, его реализация слишком проста, и вы не можете гарантировать ее медлительность.
Я кодирую медленную сортировку в Scheme, потому что главная цель Scheme - быть простым, что делает это более сложной задачей. Интересной особенностью Схемы является ее непревзойденная расширяемость; на самом деле реализации языка обычно (часто полностью) реализуются в самой Схеме. Еще лучше: все, что вам нужно, это абстракции (лямбды) и приложения. Заявки оцениваются в префиксной записи:
... это просто синтаксический сахар для:
... который применяет функцию к спискам аргументов.
Чтобы вычеркнуть этот боулинг кода, мне нужно переопределить функцию max, чтобы рекурсивно разделять список, пока он не сможет сравнивать себя. Функция min также рекурсивно переопределяется с использованием max, удаляя все максимумы, пока не останется одно число. Наконец, сортировка переопределяется путем последовательного добавления минимумов.
Медленная сортировка основана на «умножаться и сдаваться», а не «разделяй и властвуй». Он работает путем рекурсивного вытягивания максимумов до тех пор, пока вы не оставите минимум, добавляя полученный минимум каждый раз к решению и перезапуская, пока все минимумы не будут добавлены по очереди. Хотя моя реализация полностью неэффективна, она использует как можно больше вычислений, потому что: 1) это необходимо для алгоритма 2) возможно, вы захотите, чтобы этот вид закончился когда-нибудь ...
источник
Java преувеличенный беспорядок / тяжесть
Это было весело! Чувствует себя странно, чтобы опубликовать что-то вроде этого.
источник
питон
Работает только если все предметы меньше 9е99 :)
Каждый раз в цикле извлекайте наименьший элемент и заменяйте его на 9e99
источник
Питон (634)
Если список отсортирован, распечатайте его. В противном случае поменяйте местами два элемента в неправильном порядке, а затем сгенерируйте скрипт Python, который обрабатывает новый порядок. После запуска удалите созданный скрипт.
источник
Богобогосорт в Питоне
Алгоритм, изобретенный Дэвидом Морганом-Маром.
Предупреждение: не пытайтесь сделать это с любым списком, большим, чем 5 элементов. Даже 5 очень медленно.
источник
питон
Мое решение. Включает обработку ошибок и функцию, которая сохраняет пробелы при сортировке чисел, то есть пробелы остаются на месте; номера движутся.
например,
Код:
источник
Python 3
Эта программа принимает список чисел на стандартном вводе через пробел. Затем он напечатает стандартный вывод в правильном порядке. В итоге.
Объяснение: протокол pickle на самом деле предоставляет большую свободу, особенно заметную свободу импортировать и вызывать произвольные объекты с аргументами. Наиболее существенным ограничением является то, что виртуальная машина-компоновщик не имеет какого-либо управления потоком, поэтому любой код, чисто реализованный в виртуальной машине-компоновщике, должен использовать управление потоком внутри функций стандартной библиотеки Python для достижения аналогичных эффектов. Эта реализация сортировки использует спящую сортировку на основе сопрограмм, созданную либеральным применением итераторов и частичным применением.
Эквивалентный код Python будет выглядеть примерно так:
источник