bw
интересно, спасибо
bw
> Я для этих целей решил ковырять xmonad, и занятно и полезно.
:) походу тропы у всех одинаковые )
только вроде все собирались писать что то новое, а тут перешли уже и на ковыряние в XMonad, ни чего там интересного нету.
лучше ужь реактивное программирование ковырять.
> а тут перешли уже и на ковыряние
Своё с нуля (и с нулевыми знаниями) это конечно не реально круто, но я так больше не делаю (да и не получалось никогда). А что касается нового, я базу предложил, мне идея нравится, но делать буду на хорошо известных языках.
> ни чего там интересного нету
Возможно. Но WM то хороший, я вот из целей попользовать, а не покодить, собираюсь на него переходить, да и то, только тогда, как обзаведусь тремя новенькими мониками :-). Ну а пока пользовать буду всяко Haskell подтянется. Так язык конечно хороший, но не понимаю куда его приткнуть в своей практике, а тут я как бы себе выбора не оставляю.
..bw
bw
> Но WM то хороший
WM ни чем не лучше аналогов написаных на других языках ) но да мне такие WM нравятся не скрою
> Ну а пока пользовать буду всяко Haskell подтянется.
WM настраивается один раз и о забывается ), так что ни чего особо там и не подтянешь )
> Так язык конечно хороший, но не понимаю куда его приткнуть в своей практике
вот я про это же ), сила хаскеля в основном в выводе типов, но я считаю лучше вывод типов встроить в более простые решения,
пускай даже не явно для пользователя, чем городить такой огород как в хаскеле, любой язык с динамической типизацией,
и сильным компилятором, может особо ни чем и не уступить хаскелю в плане вывода типов,
но зато иметь нормальные языковые конструкции
Шашки пиши. Потом оттрахаем Тараскины на пасцале
TarasB
> Да, я именно из-за этого не учу небыдлоязыки - я не знаю, что с ними делать.
Давай-давай. Подтягивайся к нам, к Богам. Я со вчерашнего дня в секте.
Первая программа (числа Фибоначчи):
-module(fib). -export([fib/1]). fib(N) -> fib(N, 1, 1). fib(0, _, _) -> ok; fib(N, F1, F2) -> io:format("~w~n", [F1]), fib(N - 1, F2, F1 + F2).
Вторая программа (простые числа):
-module(prime). -export([prime/1]). prime(Num) -> check([], 1, 3, Num). check(List, _, _, 0) -> lists:reverse(List); check(List, Prime, Div, Num) when Div * Div > Prime -> %io:format("~w~n", [Prime]), check([Prime | List], Prime + 2, 3, Num - 1); check(List, Prime, Div, Num) when Prime rem Div =:= 0 -> check(List, Prime + 2, 3, Num); check(List, Prime, Div, Num) -> check(List, Prime, Div + 2, Num).
Для сравнения: скорость генерации (и сохранения) первых 100к простых чисел (P.S. двойка выпадает, но и черт с ней) с помощью алгоритма выше:
1> c(prime). {ok,prime} 2> timer:tc(prime, prime, [100000]). {3590000, [1,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73, 79,83,89,97,101,103|...]} 3>
Итого 3.6 секунды.
fib 0 = 0 fib 1 = 1 fib n = fib (n-1) + fib (n-2)
:)
простые числа некогда писать надо отъехать :)
да я и некогда разбирать особо твой алгоритм, я так понял там все в лоб )
для простых чисел вообще есть
http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%88%D0%B5%D1%82%D0%BE… 5%D0%BD%D0%B0
и вот реализация на хаскеле
cNoNim
> fib 0 = 0
> fib 1 = 1
> fib n = fib (n-1) + fib (n-2)
Это ведь был троллинг, да?
cNoNim
> да я и некогда разбирать особо твой алгоритм, я так понял там все в лоб )
Я все нечетные числа пробую делить на все нечетные начиная с 3 до квадратного корня с проверяемого. Все. (ничего не напутал?)
cNoNim
> для простых чисел вообще есть
Давай мой :)
kipar
это был хаскель
И да, для простых чисел надоо использовать http://ru.wikipedia.org/wiki/Решето_Аткина
entryway
> Давай мой :)
вечером, ближе к ночи ),
а пока определи по какому алгоритму будем тестить )
мне на своем компе считать время генерации? или ты будешь мой код на хаскеле запускать )
cNoNim
Ты попробуй этим кодом посчитать fib 40.
У этого алгоритма экспоненциальная сложность.
kipar
> У этого алгоритма экспоненциальная сложность.
мы сейчас о чем вообще?
я просто привел кусок кода на хаскеле ), так как entryway попросил,
ни кто вроде меня не просил приводить оптимальный алгоритм
kipar
> У этого алгоритма экспоненциальная сложность.
Мы не оптимальное решение ищем, а сравниваем реализации одного и того же алгоритма на Erlang и Haskell
cNoNim
> ни кто вроде меня не просил приводить оптимальный алгоритм
Просто именно этот кусок я постил на говнокод.
Это не алгоритм, это безумие, нормальный алгоритм считает fib 10000 за миллисекунды, а этот не посчитает fib 40 за сутки (или за год, не помню точно).
Тема в архиве.