Войти
ФлеймФорумПрограммирование

Что накодить на Haskell'е? (4 стр)

Страницы: 1 2 3 4 5 6 Следующая »
#45
15:16, 26 сен 2011

entryway
а вообще че это у тебя за язык такой )))?

#46
15:17, 26 сен 2011

cNoNim
> а вообще че это у тебя за язык такой )))?
http://lurkmore.ru/erlang

#47
15:19, 26 сен 2011

kipar
специально для тебя

fib n = round $ phi ** fromIntegral n / sq5
  where
    sq5 = sqrt 5 :: Double
    phi = (1 + sq5) / 2

скопипастил формулу бине

#48
15:22, 26 сен 2011

entryway
я почему то так и подумал,
я с ним не работал ), так как будем тестить?

#49
15:22, 26 сен 2011

kipar
> Это не алгоритм, это безумие, нормальный алгоритм считает fib 10000 за
> миллисекунды, а этот не посчитает fib 40 за сутки (или за год, не помню точно).
Не знаю что там у cNoNim, но мой пример на Erlang первые 10к чисел генерит за 16 миллисекунд. С виду у cNoNim что-то похожее.

#50
15:27, 26 сен 2011

cNoNim
> так как будем тестить?
Ну реализовывай мой алгоритм нахождения и занесения в список первых N простых чисел.

Я все нечетные числа начиная с 1 пробую делить на все нечетные начиная с 3 до квадратного корня с проверяемого. (ничего не напутал?)

Первые миллион простых чисел у меня генерируются за 3.6 секунды.

#51
15:28, 26 сен 2011

entryway
Нет, как раз твой алгоритм нормальный (хвостовая рекурсия), а у CNoNim - нет, т.е. двойная рекурсия.

#52
16:00, 26 сен 2011

entryway

fib n = ffib n 1 0
ffib 0 _ f2 = f2
ffib (n+1) f1 f2 = ffib n f2 (f1+f2)

вот аналог твоего твой кода фибоначи...
у тебя там кстати помоему ошибка, ну либо я не понимаю как работает erlang

#53
16:10, 26 сен 2011

cNoNim
> у тебя там кстати помоему ошибка, ну либо я не понимаю как работает erlang
Хз, генерит вроде правильно. Давай теперь простые числа, а то Фибоначчи слишком быстрые в генерации, а если генерировать слишком много (100к), то моему коду не хватает памяти, так как числа получаются слииииииишком длинные и их много.

#54
16:13, 26 сен 2011
prime n = check [] 1 3 n

check ls _ _ 0 = reverse ls
check ls p d n
  | d * d > p = check (p : ls) (p+2) 3 (n-1)
  | p `mod` d == 0 = check ls (p+2) 3 n
  | otherwise = check ls p (d+2) n

я вообще спрашивал как тестить скорость бум?

в общем развлекайся попробуй поставить хаскель опробовать мой алгоритм
до вечера

#55
16:14, 26 сен 2011

cNoNim
> я вообще спрашивал как тестить скорость бум?
Ну я время засекал средствами эрланга. В посте с кодом - оно есть.

#56
16:15, 26 сен 2011

entryway
> Хз, генерит вроде правильно.
fib 0
fib 1
правильно генерит?

#57
16:16, 26 сен 2011

entryway
я как бы к тому что...
ты не думал что время зависит от характеристик железа?
мне надо либо твой эрланг запустить либо тебе мой хаскель
алгоритмы одинаковые, что мы пытаемся замерить?

#58
16:16, 26 сен 2011

cNoNim
> fib 1 правильно генерит
да

2> c(fib).
{ok,fib}
3> fib:fib(1).
[1]
4> fib:fib(0).
[]
5> fib:fib(2).
[1,1]
6> fib:fib(3).
[1,1,2]
7>
#59
16:17, 26 сен 2011

entryway
т.е. fib 0 :)

Страницы: 1 2 3 4 5 6 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.