Михаил Ильин ([info]yorool_gui) wrote,
@ 2008-06-22 15:32:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
немного самолюбования
По наводке [info]_denplusplus_ начал решать задачки в Project Euler. С моими "знаниями" математики для меня там даже тривиальные задачи интересны, а на Haskell их делать одно удовольствие.

Например под катом функция разложения числа на простые множители. По ходу научился пользоваться unfoldr и вспомнил из школы слова "решето Эратосфена" (хотя и не уверен, что вспомнил правильно, но все вроде работает как надо)


import Data.List
import Data.Maybe

divisors n ms = filter (\m -> (n `mod` m)==0) ms

primes = 2:3:unfoldr (\currprimes@(n:_) -> let nextprime = fromJust $ find (\x->(divisors x currprimes)==[]) [n+2..]
                                            in Just (nextprime,nextprime:currprimes) ) [3,2]

primeFactors n = case divisors n $ takeWhile (<=n) $ primes of
                   p:_ -> p : primeFactors (n `div` p)
                   []  -> []Syhi-подсветка кода



(Post a new comment)


[info]soloviewoff
2008-06-22 05:16 pm UTC (link)
Мне еще acm.timus.ru нравится. Правда, скорость моих решений оставляет желать лучшего. Задачу за номером 1517 (http://acm.timus.ru/problem.aspx?space=1&num=1517) решаю в фоновом режиме месяца 3. Таким образом, пришел к выводу, что олимпиадного будущего не будет. Ну и пофиг - главное интересно.

Там, правда, Хаскель не принимают.

(Reply to this)


[info]rumataestor
2008-06-22 07:49 pm UTC (link)
Я немного порешал там немного задачек для изучения хаскеля, да что-то поднадоело. Некоторые задачи вообще можно без компьютера решать.

(Reply to this)


[info]zhengxi
2008-07-21 07:04 pm UTC (link)
на spoj.pl на хаскеле можно решать

(Reply to this)


Create an Account
Forgot your login?
Login w/ OpenID
English • Español • Deutsch • Русский…