Skip to content

Instantly share code, notes, and snippets.

Created April 9, 2013 03:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/5342835 to your computer and use it in GitHub Desktop.
Save anonymous/5342835 to your computer and use it in GitHub Desktop.
すごいH本読書会 in 大阪 #2

出展は@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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment