2009-02-01から1ヶ月間の記事一覧
Inscribed circles of triangles with one angle of 60 degrees Problem 195 - Project Euler 前にやった問題で似たようなものがあった(たしか,トリチェリの三角形だった気がする). はじめは,外接円だと思っていた. import Control.Monad (guard) p195 r…
Problem 193 - Project Euler 平方数で割り切れない2^50以下の数を数える. メビウス関数と包除原理を利用. import Control.Monad.ST (ST,runST) import Control.Monad (when) import Data.Array.ST (STUArray,newArray,readArray,writeArray) p193 :: Inte…
Coloured Configurations Problem 194 - Project Euler 困難は分割せよ.ということで,それぞれのユニットごとの塗り分けパターンを考えてみた. 結果. choose :: (Integral a) => a -> a -> a choose n r = div (product [n-r+1..n]) $ product [1..r] p1…
beamer使っているとdviではうまく表示されないことがあるので,pdfまで作る必要がる. しかし,pdfを開いたままだとpdfを作れない. これで一度閉じてdvipdfmxを走らせる.pdfopenで開く.便利. 次のファイルをtex2pdf.batとかして保存. rem pdfclose and p…
さっき,突然PCが落ちました. 電源入れなおしたら,正常起動したけれども. あー,こりゃ,もう,やばいかも… PCの故障は困るんだよなぁ… とりあえず,バックアップ取っておくか.
Problem 192 - Project Euler 最良近似有理数とでも呼ぶのでしょうか. 探索範囲と√nの形から,どうやら連分数と関係がありそうだ,と思っていたら, Continued fraction - Wikipedia あとはSemiconvergentsの単調性を利用. import Data.List ((\\)) import…
Problem 188 - Project Euler これは前に解いた. import Number (factors) import Data.List (group) phi :: Integer -> Integer phi = product.map f.group.factors where f ps@(p:_) = let n = length ps in p^(n-1)*(p-1) towerMod :: Integral a => Int…
セルの結合(横) \multicolumn{2}{|c|}{foo} セルの結合(縦) ただし\usepackage{multirow} が必要. \multirow{2}{*}{bar} \cline{2-3} などと一緒に使う. 太い水平線 \hline のかわりに \noalign{\hrule height 1pt} 記号結合(?) \begin{tabular}[tb…
Problem 191 - Project Euler 素直なDP. import Data.Map (Map,unionsWith,filterWithKey,mapKeysWith,fold,singleton) type State = (Int,Int) late,onTime,absent :: State -> State late (a,l) = (0,l+1) onTime (_,l) = (0,l) absent (a,l) = (a+1,l) da…
Problem 190 - Project Euler ラグランジュの未定乗数法を使うだけ. import Data.Ratio ((%)) p :: (Integral a, Integral b) => a -> b p m = floor.product $ [(2*n % (m+1))^n | n <- [1..m]] p190 :: (Integral a, Integral b) => a -> b p190 m = sum.…
Problem 189 - Project Euler まぁ,DPですな. import Data.List (delete,nub) import Data.Maybe (mapMaybe) import Data.Map (fromListWith,toList) import Control.Arrow ((***)) data Color = R | G | B deriving (Eq,Ord,Show) normal :: [Color] -> […
http://projecteuler.net/index.php?section=problems&id=187 まぁ,関数型ではやりにくい. とりあえず,javaで. 非常にシンプルな,ふるいを使ったアルゴリズム. import java.util.Arrays; public class P187{ public static void main(String[] args){ …