LL Golf Hole 4
問題は以下の通り。
GNU GENERAL PUBLIC LICENSE Version 3に登場する単語について、単語が登場する行を示した索引を作成してください。
与えられる文章についてはリテラルで表記する、標準入力で与えられる、引数でファイル名が与えられるなどは自由とします。
余力のあるものはこのプログラムを短くしてみたり、短くしてみたり、短くしてください。
とりあえず短めに書いたらこうなった。Haskellで6行也。
import List main = do cs <- readFile "gpl.txt" let ws = nub $ words cs ls = map words $ lines cs mapM_ print $ zip ws $ map (flip indices ls) ws where indices w = map (+ 1) . findIndices (elem w)
トータルで何バイトとかあんまり考えてなくて、とりあえず行数が少なくなる方向でやってみた。
letをなくせばもっと短くなるけど、そこそこ読めるコードの範囲で留めた結果がこれ。