![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Тогда вот вам няшка как раз уровня песочницы.
Это исходник кода сортировки. В одну строчку. Без вызова внешних функций. Правда, на Хацкеле. Отсюда.
Это исходник кода сортировки. В одну строчку. Без вызова внешних функций. Правда, на Хацкеле. Отсюда.
qsort1 s = case s of {[] -> []; (x:xs) -> qsort1 [y | y<-xs, y<x] ++ x : qsort1 [y | y<-xs, y>=x]}
Ну или вот тоже красивый, но с вызовом filter.qsort2 :: Ord a => [a] -> [a]
qsort2 [] = []
qsort2 (p:xs) = (qsort2 lesser) ++ [p] ++ (sort2 greater)
where
lesser = filter (< p) xs
greater = filter (>= p) xs
Третий - через partition, тоже ничево.qsort3 [] = []
qsort3 (p:xs) = (qsort3 lesser) ++ [p] ++ (qsort3 greater)
where (lesser, greater) = partition (< p) xs
Давайте, напишите мне то же самое на сях.
no subject
Date: 2012-07-18 01:29 pm (UTC)no subject
Date: 2012-07-18 01:36 pm (UTC)no subject
Date: 2012-07-18 06:38 pm (UTC)Слава, это спортивное программирование, типа как диггера решать. в крайнем случае системное или низкоуровневое - имеет очень узкое применение.
Прикладное - это когда sort(s)
С помощью прикладного можно реать миллион интересных задач, это инстурментарий. С помощью спортивного - только играться, как в шахматы ) хотя никто не спорит что это прикольно и лаконично! вопросов нет. как задачка для поразмыслить субботним вечером сидя в кресле в саду :)
Я лично ненавижу програмирование. Поэтому пишу так
layout:{
"nicegraph":{"type":"graph","source":"api/mygraphobject"},
"nicetable":{"type":"table","source":"api/my555"}}
и оно мне рисует расписной скрин, который растиягвается и работает во всех устройствах и браузерах, c красивым графом (с дефолтными настройками все, конешно), который можно крутить ов все стороны, и табличкой, которую сразу можно редактировать, добавлять, сортировать, группировать, экспортировать, оно сразу приязано к базе через апи, к экспортным фильтрам и тп.
как именно оно там внутрях это делает - я написал один раз и надеюсь когда нибудь забуду нахер :)
no subject
Date: 2012-07-18 07:11 pm (UTC)"Узкое применение": посмотри, например, вот это (http://websharper.com/samples/TogglePanel). Там HTML+AJAX, и всё это со строгой типизацией. Оно тупо не скомпилируется, если кривое!
"nicegraph": Ты пытаешься путать зелёное и сладкое. Nicegraph - это библиотечная штука. Её кто-то уже написал, как и sort. Ни на каком языке программирования их никто не переписывает, они уже есть.
Так что когда показывают самолёт, не надо говорить, что в "Запорожце" есть модный набалдашничек на переключателе передач. Набалдашничек и в самолёте есть. ;)
no subject
Date: 2012-07-19 07:54 am (UTC)no subject
Date: 2012-07-19 03:25 pm (UTC)Ты сравниваешь реализацию и внешний интерфейс? Так у моих программ (у всех!) внешний интерфейс вообще без параметров:
main();
ЗдОрово, правда? :)
В постинге писалось не о том, как выглядит интерфейс метода sort, а о том, как написать ему потроха. Без или с минимальным использованием библиотек.
no subject
Date: 2012-07-18 07:47 pm (UTC)Правильно.
1st class functions и лямбды придумали уроды.
Clojures придумали извращенцы.
Функциональный анализ (ветвь алгебры), все эти множества функций над множествами функций придумали шепелявые старухи (вспоминаю свою преподшу из книвера).
А за комбинатор неподвижной точки в приличном обществе можно в морду схлопотать! :)))
no subject
Date: 2012-07-18 08:31 pm (UTC)no subject
Date: 2012-07-18 10:16 pm (UTC)no subject
Date: 2012-07-19 06:48 am (UTC)Я лишь привожу стандартный ответ на этот qsort, вон ниже его уже воспроизвели. А на ФП я пару собак съел, если что, даже в fprog.ru автором числился, в истинную веру меня обращать не нужно.
no subject
Date: 2012-07-19 03:32 pm (UTC)Так у меня было! :)))
В веру обращать не буду, уже договорились :)
Но мы оба одинаково понимаем тематику? Никто не собирается переписывать библиотеки. Но в качестве упражнения для ума, сортировку писать нужно. Равно как ханойские башни и волк-коза-капуста. Чисто для причёсывания мыслей в голове.
А почему Хацкеля синтаксис смешнее? Я на ём не писал, но синтаксис читабельный, имхо.
no subject
Date: 2012-07-20 03:11 pm (UTC)no subject
Date: 2012-07-20 04:20 pm (UTC)Я не силён в философии ФП (пока что), но мне кажется так...
Тем не менее, вопрос в силе: причём здесь синтаксис? :)
no subject
Date: 2012-07-20 04:47 pm (UTC)А синтаксис при том, что если пытаться делать сортировку быстро, а не просто красиво, то отличия от Си будут в основном синтаксическими.
no subject
Date: 2012-07-19 03:30 am (UTC)qsort1 s = case s of {[] -> []; (x:xs) -> qsort1 [y | y<-xs, y<x] ++ x : qsort1 [y | y<-xs, y>=x]}
и каждый раз, когда вижу, мне хочется форматнуть человеку бердан. Какой, к свиням, qsort?! Скорость настоящего алгоритма QuickSort (сокращённо qsort) пропорциональна Nlog2N, дополнительные затраты памяти - ноль. А о скорости и ресурсоёмкости этого уебанства даже говорить смешно.
Просто уберите буковку q, и тогда я Вас прощу :)
no subject
Date: 2012-07-19 03:36 pm (UTC)Давайте, Вы меня лучше простите за то, что Вы сами ни с того, ни с сего, решили, что qsort = quick sort? :)
qsort - это чтобы не конфликтовало со стандартными методами! ;))
ЗЫ. Почему двоичный логарифм? Натуральный же?
no subject
Date: 2012-07-19 03:53 pm (UTC)man qsort
qsort - это чтобы не конфликтовало со стандартными методами
Как раз qsort - стандартная функция и стандартное сокращение. Пруф - http://ru.wikipedia.org/wiki/qsort . А насчёт конфликтов - где это Вы видели библиотечные функции/методы с названиями sort1, sort2 и sort3?
Почему двоичный логарифм? Натуральный же?
Попытался представить себе алгоритм, скорость которого была бы пропорциональна натуральному логарифму от объёма данных. Не смог.
no subject
Date: 2012-07-19 04:30 pm (UTC)Первенького назвали qsort.
Когда появился второй, пришлось первенького переименовать, чтобы со вторым было созвучно.
А про логарифм - спасибо, почитаю, какой он на самом деле.
no subject
Date: 2012-07-20 03:15 pm (UTC)no subject
Date: 2012-07-20 03:36 pm (UTC)К моему стыду, чтобы логарифмы перевести, тоже придётся гуглить. Вот честно, никогда не пользовался ими уже почти 20 лет (трясу седыми мудями, да).
no subject
Date: 2012-07-20 03:53 pm (UTC)no subject
Date: 2012-07-20 04:14 pm (UTC)