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

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

H99

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 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とりあえず自分で考えてみてわからなかったらすぐ写経…

Haskell H99 Question 10

H99

http://www.haskell.org/haskellwiki/99_questions/1_to_10 10問目9問目をまねて自分で作ってみた。 encode :: (Eq a, Num b) => [a] -> [(b, a)] encode [] = [] encode (x:xs) = (number, x) : encode rest where getSeqNum (x:[]) = (1, []) getSeqNum (x…

H99の9問目の回答解説

H99

http://www.haskell.org/haskellwiki/99_questions/Solutions の9問目。答え丸写しですが、こういう書き方かっこいいですよね。 まさにHaskell書いてるって感じします。 pack :: (Eq a) => [a] -> [[a]] pack [] = [] pack (x:xs) = (x:first) : pack rest w…