むずかしめのパソコン勉強の記録

計算機科学とか関数型言語とか

Haskell

Haskell H99 Question 17

H99のQuestion 17 http://www.haskell.org/haskellwiki/99_questions/11_to_20 全然わからなかったので答え見ました。 模範解答 http://www.haskell.org/haskellwiki/99_questions/Solutions/17 split :: [a] -> Int -> ([a], [a]) split [] _ = ([], []) sp…

すごいHaskellたのしく学ぼう 第4章 再帰の練習 その2

第4章の続き。 前の: http://ugnom.hatenablog.com/entry/2013/12/30/131136 再帰の練習です。takeある配列の最初の第一引数の数だけ取り出す。 ついでに、最後から指定数だけ取るのも作ってみました。 take' :: Int -> [a] -> [a] take' n (x:xs) | n <= …

すごいH本の勉強始めます。

記録がてら、参考になった場所や練習問題などの自分の解答を載せていきます。 特に例題などは本のコードをなるべく見ずに自分で書いてみてから答え合わせ、という方式にします。今4章が終わって5章のあたりですが、まだ復習程度のトピックばかりなのでそこ…

すごいHaskellたのしく学ぼう 第4章 再帰の練習

すごいH本の4章で再帰の練習のページがあります。 答えをなるべく見ずに自分で実装してみる。maximum関数の実装 maximum' :: (Ord a) => [a] -> a maximum' [] = error "empty list" maximum' [x] = x maximum' (x:xs) = max x (maximum' xs) 空リストの挙…

Haskell H99 Question 16

http://www.haskell.org/haskellwiki/99_questions/11_to_20 Haskell H99 Question 16日本語訳 リストのN番目の要素を取り除きなさい。 Example in Haskell: *Main> dropEvery "abcdefghik" 3 "abdeghk" あまりコメントはないかな。 1から始めてnまでいった…

Haskell H99 Question 15

http://www.haskell.org/haskellwiki/99_questions/11_to_20 Problem 15 日本語訳 与えられた数字の回数だけリストの各要素を複製しなさい。 > repli "abc" 3 "aaabbbccc" repli :: [a] -> Int -> [a] repli xs y = concatMap (\x -> replicate y x) xs repl…

Haskell H99 Question 14

http://www.haskell.org/haskellwiki/99_questions/11_to_20 H99 Question 14 日本語訳 リストの要素を重複させなさい。 > dupli [1, 2, 3] [1,1,2,2,3,3] これは簡単ですね。 dupli :: [a] -> [a] dupli = concatMap (\x -> ([x,x])) dupli' [] = [] dupli'…

Haskell H99 Question 12

http://www.haskell.org/haskellwiki/99_questions/11_to_20問題12 問題の日本語訳 連長圧縮のリストを復号しなさい。 問題11で明示された通りに作られた連長圧縮コードが与えられる。その展開した版を作成しなさい。 data ListItem a = Single a | Mult…

Haskell H99 Question 32

http://www.haskell.org/haskellwiki/99_questions/31_to_41 Haskellの練習問題H99の32問目。最大公約数をとのことですが、ユークリッドの互除法を使えとの指示なので、wikipediaで勉強: アルゴリズム1. 入力を m, n (m ≧ n) とする。 2. n = 0 なら、 m を…

Haskell H99 Question 31

http://www.haskell.org/haskellwiki/99_questions/31_to_41 ある自然数が素数かどうかを求める問題。 まず、素数を求めるロジックを、「初期値が2以上で、初期値までの各自然数で割り切れないこと」、という最も単純なアルゴリズムで解いてみる。簡単なロ…

Haskell H99 Question 11

http://www.haskell.org/haskellwiki/99_questions/11_to_20 import Data.List data ListItem a = Single a | Multiple Int a deriving (Show) --自分で作った解答 encodeModified :: Eq a => [a] -> [ListItem a] encodeModified xs = map (listToAmount) (…

Haskellの練習問題に使っているサイト

Haskellをやったりやらなかったりしてしばらくたちますが、本格的に勉強を始めようと思ってこのサイトの練習問題を始めました。 http://www.haskell.org/haskellwiki/H-99:_Ninety-Nine_Haskell_Problemsとりあえず自分で考えてみてわからなかったらすぐ写経…