2008-11-28から1日間の記事一覧

Problem 117

http://projecteuler.net/index.php?section=problems&id=117 そのままDP。 import Data.Array.IArray measure n = mArr!n where mArr = listArray (0,n). map m $[0..n]::Array Int Integer m 0 = 1 m x = sum.map m'.zipWith (-) (repeat x) $ [1..4] m'…

Problem 116

前門と同じような考え方。むしろこっちのほうが簡単だと思う。 choose n r = div (product [n-r+1..n]) $ product [1..r] replace m n = sum[choose (n+t-t*m) t | t<-[1..div n m]] main = print.sum.zipWith replace [2,3,4] $ repeat 50

Problem 115

m=3のときred(5)black(2)red(3) (n=10)を次のように考える ■○○□○■(□)black(3)red(3)black(1)red(6)black(1) (n=14)ならば ○○○■□■○○○□(○)○:直前と同じ色(先頭ならblack) ■:red のはじまり(○ (3=m)個ぶん) □:black のはじまり (直前が red の終わり) 最…

Problem 114

http://projecteuler.net/index.php?section=problems&id=114 普通のDP import Data.Array.IArray measure n = mArr!n where mArr = listArray (0,n). map m $ [0..n]::Array Int Integer m n | n < 3 = 1 | n == 3 = 2 | n > 3 = sum [mArr!(n-m-1)| m<-0:[…

Problem 113

http://projecteuler.net/index.php?section=problems&id=113とりあえず、再帰式を考えて、DPにした。 しかし、かなりきれいな再帰式なので手計算できそうではある。が、いいや。 import Data.Array.IArray n = 100 mkArray :: (Ix i)=> (i -> Integer)-> (i…

Problem 112

http://projecteuler.net/index.php?section=problems&id=112 ナイーブな実装。遅くないので、よしとする。 map2 f xs = zipWith f xs $ tail xs descend, ascend :: Integer -> Bool descend = and.map2 (>=).show ascend = and.map2 (<=).show main = prin…

靴下と大入

今日、イトーヨーカドーで靴下買ったら、 還元セール中で1割返ってきた。なんかちょっとうれしかった。 金額は100ぐらいなんだけど、大入袋に入って返ってきた。なんか、不況らしいけど、それと関係あるのかね?

Problem 120

http://projecteuler.net/index.php?section=problems&id=120簡単な計算(とするが、意外と時間がかかったのは内緒だ)で a:even -> a*(a-2) a:odd -> a*(a-1) が分かる。これが分かれば、後は簡単。 rMax a | even a = a*(a-2) | odd a = a*(a-1) main = pr…

Problem 118

http://projecteuler.net/index.php?section=problems&id=118いたって普通の解法だと思う。 import Data.List import Number permPrime :: [Char] -> Integer permPrime = genericLength.filter isPrime'.map read.permutations comb _ 0 = [[]] comb [] _ =…