出展は@koko_uさんのこちらです
- 与えられた文字列を大文字に変換する関数
- 与えられた文字列から空白を除去する関数
- リスト lst1 が lst2 を含んでいるかどうかを判定する関数
- 配列から重複する要素を削除する関数
- 与えられた正数から二進表記の文字列を得る関数
ghci> upperCase "Hello World"
"HELLO WORLD"
ghci> removeSpace "Hello World\nI'm John."
"HelloWorldI'mJohn."
ghci> [1..4] `cover` [2..4]
True
ghci> [1..4] `cover` [2..6]
False
# 重複も考慮
ghci> [1, 1, 2] `cover` [1, 1]
True
ghci> [1, 2] `cover` [1, 1]
False
ghci> uniq [1, 2, 1, 7, 6, 2, 4, 8]
[1, 2, 7, 6, 4, 8]
ghci> binExp 10
"1010"
三つのポール 1 2 3 の内、ポール 1 に n 個の円盤が乗っているとし、すべての円盤をポール 2 に移動する手順を返す関数を書け。
手順はポール 1 からポール 2 に円盤を移動する場合にペア (1, 2) と表記し、そのようなペアのリストを手順と見なす
ghci> hanoi 3
[(1, 2), (1, 3), (2, 3), (1, 2), (3, 1), (3, 2), (1, 2)]
第 n 番目のフィボナッチ数を得る関数を書け、ただし 1番目と 2番目のフィボナッチ数は 1 とする
-
ダメな例
fib :: Integer -> Integer fib 1 = 1 fib 2 = 1 fib n = fib (n-1) + fib (n-2)
fib 50 くらいで還らぬ人となります。
# 最短経路
縦に n マス、横に k マスの碁盤目をAからBまで最短経路で移動する場合の数を求めよ
- ダメな例...もういいよね。
``` haskell
pathCount _ 0 = 1
pathCount 0 _ = 1
pathCount n k = pathCount (n-1) k +
pathCount n (k-1)