2010-10-01から1ヶ月間の記事一覧
ブルートフォースで6分 main = print $ take 10 [(a,b,c,d,e,f,g,h)|a<-[0..200],b<-[0..100],c<-[0..40],d<-[0..20],e<-[0..10],\ f<-[0..4],g<-[0..2],h<-[0..1],a+b*2+c*5+d*10+e*20+f*50+g*100+h*200==200]あとは 2ペンス硬貨を両替していく方法が思い…
問題どおりだと以下のとおり Prelude Data.List> let f x= g $ show x ; g []=0;g (x:xs)=((read [x])::Int)^4+ g xs in [x|x<-[2..9999],f x==x] [1634,8208,9474] (0.30 secs, 132602804 bytes)どうも色々実験すると6桁以内なので main=print $ sum $ filt…
たぶん組み合わせの出力とsort|uniqの問題だろう import Data.List main = print $ length $ map head $ group $ sort $ map (uncurry (^)) [(a,b)|a<-[2..100],b<-[\ 2..100]]あんまりなのでポイントフリー化してみたが余り意味が無かった。 import Data.Li…
なんどやってもおかしいと思ったのは n^2+a*n+bの値がマイナスになっていてもisPrimeがTrueを出すときがあったせいだ。 import Data.Numbers.Primes import Data.Ord import Data.List main=print $ uncurry (*) $ maximumBy (comparing (length.plist)) ab …
http://hackage.haskell.org/packages/archive/primes/0.2.0.0/doc/html/Data-Numbers-Primes.htmlこれをつかう。 cabal install primes以上使い方 Prelude Data.Numbers.Primes> :m Data.Numbers.Primes Prelude Data.Numbers.Primes> sum $ takeWhile (<20…
73 74 75 76 77 78 79 80 81 72 43 44 45 46 47 48 49 50 71 42 21 22 23 24 25 26 51 70 41 20 7 8 9 10 27 52 69 40 19 6 1 2 11 28 53 68 39 18 5 4 3 12 29 54 67 38 17 16 15 14 13 30 55 66 37 36 35 34 33 32 31 56 65 64 63 62 61 60 59 58 57 増分…
フェルマーの小定理をみると mod a^(p-1) p == 1 (pは2,5以外の素数) aを10とすると 10^(p-1)は p-1桁のなかに循環少数が含まれている また、余りが1になったとき循環が終わることがわかるhttp://www.math.kindai.ac.jp/~chinen/junkan_f/junkan.htmlとい…
あっさり終わった。 項数を出すのに[1..]とzipしている点で遅くなるかと思ったがまったく問題なかった。 main = print $ head $ dropWhile ((
面倒だったので 力技で行ったら40分かかった。 どうやって高速化しようか… import Data.List main = print $ (sum [1..m]) - ( sum $ map head $ group $ sort [x+y|x<-abundantNumbers,y<-abundantNumbers\ ,x+y<=m]) abundantNumbers::[Int] abundantNumbe…
簡単だった。 import Data.List main = print $ (sort $ permutations [0..9]) !! (10^6-1)
まあ問題なし。 [1..]とzipをとる点がhaskellらしくて良い import Data.List import Data.Char main=print $ sum $ zipWith score [1..] $ sort names score x y = x * (sum $ map code y) code x = ord x - ord 'A' + 1 names=["MARY","PATRICIA","LINDA"..…
完全数を除外するのを忘れてた。 main = print $ sum [x|x<-[1..9999],isAmicable x] d n = [x|x<-[1..n-1],mod n x==0] isAmicable n = n/=m && m==sum (d n) && n==sum (d m) where m=sum (d n)
久しぶりに簡単な問題だった。 main = print $ sum $ map toIntg $ show $factorial 100 toIntg::Char->Integer toIntg x = read [x] factorial::Integer->Integer factorial 1 = 1 factorial n = n * factorial (n-1)まあ、以下の1行でもいいか。 |<Prelude> sum $ </prelude>…
1901年からというのに気がつかなかったorz main = print $ length $ filter is1Sun calendar is1Sun ([y,m,d],w) = if y>=1901&&d==1&&w=="Sun" then True else False calendar = zip [[y,m,d]|y<-[1900..2000],m<-[1..12],d<-[1..lastDay m y]] (cycle ["Mo…
最後の二行を 左を合わせてzipWith (+)したものと 右を合わせてzipWithしたものを比較し残りのものと置換して最後までやる上からたどる方法は配列でも使わないと無理、速度的にも無理だけど・・・ main = print $ g a67 g x | length x==1 = x | otherwise =…
組み合わせの問題なので内包表記が大活躍する。 concatMapの方が読みやすいかもしれない。 main = print $ length $ concat one2thousand one2nine = ["one","two","three","four","five","six","seven","eight","nine"] zero2nine = "":one2nine ten2ninete…
GHCiはTabで補完するのにemacsがM-C-iでは耐えられない。 そこでtab -> 補完 shift+tab -> インデントとやってみるhaskell-mode は aptitudeで入れる $ sudo aptitude install haskell-modeghc-modもインストールしておく.emacsへ以下を追加する ;;for haske…