haskell

コインを減らす払い方

コインを減らす払い方 (どう書く?org) いま、あなたの財布の中にはコインがたくさん入っています。これを少しでも減らしたいと思います。支払うべき金額と持っているコインの種類と数を与えられたときに、どのコインを何枚出せばおつりを受け取った後のコイ…

しりとり

なんか煮詰まったので息抜きに ここの問題 をひとつ解いてみる.しりとり: 1. 文字列のリストの要素全てを使ってしりとりが完結するかを判定 2. 最長のしりとりを出力とりあえずいけるところまでしりとりさせる. OCaml でやろうかと思ったけどバックトラッ…

組み合わせ

前回の改良バージョンを眺めていると組み合わせも簡単に作れることに気付く. takeOne のときに 前半を捨ててしまえばよさそうだ. takeOne' :: [a] -> [(a, [a])] takeOne' [] = [] takeOne' (x:xs) = (x, xs) : takeOne' xscomb :: Int -> [a] -> a comb _…

順列

順列をリストモナドでどう書くのだろう,と,ふと思いたち書いてみた. remove _ [] = [] remove x (y:ys) = if x == y then ys else y : (remove x ys)perm _ [] = [[]] perm 1 l = do x <- l return [x] perm n l = do x <- l xs <- perm (n - 1) (remove …