[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 06/18 14:14 / Filesize : 205 KB / Number-of Response : 798
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

関数型プログラミング言語Haskell Part18



56 名前:46 mailto:sage [2012/03/21(水) 23:06:26.29 ]
自分で作ったのは、こんな感じ

tails' :: [a] -> [[a]]
tails' [] = []
tails' [x] = [[x]]
tails' xs = xs : tails' (tail xs)

comb1 :: [a] -> [[a]]
comb1 xs = map (:[]) xs

combN', combN :: ([a] -> [[a]]) -> [a] -> [[a]]
combN' f (x:xs) = map (x:) (f xs)
combN f xs = concatMap (combN' f) (tails' xs)

comb :: [a] -> Int -> [[a]]
comb xs n = (iterate combN comb1 !! (n-1)) xs

使用例
comb [1,2,3,4,5] 3
==>
[ [1,2,3], [1,2,4], [1,2,5], [1,3,4], [1,3,5]
, [1,4,5], [2,3,4], [2,3,5], [2,4,5], [3,4,5] ]

n重ループを分解した感じ
自分で書いたコードだが、なんか自分でムカツク






[ 続きを読む ] / [ 携帯版 ]

全部読む 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<205KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef