2018-01-01から1ヶ月間の記事一覧

ポーカー遊び完結編

前回のコードに加え、リストをシャッフルする汎用関数(トランプデッキにも適用可能)などを実装しました。デッキを人数分に分けるdistributeも作りました。 randompick [] = return Nothing randompick xs = do x <- randomRIO (0,length xs - 1) :: IO Int r…

Haskellでポーカー?

長いコードになりましたので続きから

Haskellの型クラスを利用した有理数型

タイトル通りです。 data Ration = Integer :/ Integer | AddID instance Eq Ration where (x :/ y) == (x':/y') = let s1 = gcd x y s2 = gcd x' y' in (x `div` s1 == x' `div` s2) && (y `div` s1 == y' `div` s2) instance Show Ration where show (x :/…

高速フィボナッチ

Haskellで書きました。 matrix2 (x1,y1,z1,w1) (x2,y2,z2,w2) = (x2*x1+y1*z2 , x1*y2+y1*w2,x2*z1+w1*z2,y2*z1 + w1*w2) repeat' n f x y | n < 1 = f x y | n == 1 = f x y | n > 1 = repeat' (n-1) f (f x y) y third (x,y,z,w) = z matrxpow m n | n == …

エラストテネスのふるい

エラストテネスのふるいを書きました erast t = let list = [2,3..t] erasti [] = [] erasti (x:xs) = x : erasti (filter (\y -> (y `mod` x) /= 0) xs) in erasti list ふるいに用いられる数字は素数であることが確定するので、再帰的に書けます。