h-index #2
「わかりやすいコードではないなぁ」と言われたけど、さてどうしたものか。
命名をがんばる。
hindex :: [Int] -> Int hindex lst = length $ takeWhile cond rankedList where rankedList = zip (sortBy (flip compare) lst) [1..] cond (val, rank) = val >= rank
効率は考えずに定義どおりやる。
hindex :: [Int] -> Int hindex lst = foldl max 0 (filter cond [1 .. length lst]) where cond n = (length $ filter ((<=) n) lst) >= n
cond という名前がいかにもひどいけど、いい名前が思い浮かばない。