何時ごろにファイルを編集することが多い?
30分プログラム、その602。何時ごろにファイルを編集することが多いかを調べてみよう。
Twitterの発言を分析するツールだと、何時ごろの発言が多いかを表示してくれる。すると、いつも何時ごろかヒマか分かっておもしろかったりする。
というわけで、それをファイルについてやってみよう。
ファイルの編集時間だしバラバラになるだろうと思ってやってきたけど、かなり偏りがあることが分かった。ボクは30分プログラムを20時ごろにやることが多いらしい。
使い方
$ ghc --make editTime $ ./editTime *(.) 0: 1: 2: 3: 4: 5: 6: * 7: ***** 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: ******************************************************** 21: ********* 22: ************************* 23: 24:
ソースコード
import System.Directory import System.Time import System.Environment import Data.List import Text.Printf getHour :: FilePath -> IO Int classify :: [Int] -> [(Int,Int)] getHour filePath = do t <- getModificationTime filePath ct <- toCalendarTime t return $ ctHour ct -- 効率が悪い。直感によれば、O(n^2)。 classify xs = loop 0 xs where loop 25 _ = [] loop n xs = let (ys,zs) = partition (== n) xs in (n,length ys):loop (n+1) zs main = do files <- getArgs times <- mapM getHour files >>= return . classify mapM_ (\(time,n) -> printf "%2d: %s\n" time $ replicate n '*') times