No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 1194 | 1195 | 1196 |...| 1252 | 1253 | 1254 || Next»

とりあえず...

Pitts の論文でも読むか.

ICPCをHaskellでやろうとしたときのテンプレート

ICPCをHaskellでやろうとすると入出力はこんな感じだろうか? とりあえずメインルーチンはデータセットのリストを getProblems で生成し,mapM_ で各データセットに対して solve で解いた結果を putStrLn.show で出力と.

main = getProblems >>= mapM_ (putStrLn.show.solve)

getProblems に関して.各入力セットの先頭の数字が終了フラグになるタイプは,終了なら [] をリターン,そうでなければデータをタプルにして cons をリフトする.

main = getProblems >>= mapM_ (putStrLn.show.solve)
getProblems = 
    do
    [n] <- getNums
    if n==0 then return []
       else do
            xs <- replicateM n getEntry
            liftM (xs:) getProblems
    where 
    getEntry = liftM words getLine
    getNums = liftM (map read.words) getLine
 

入力の最初にデータセットの数がある場合は replicateM でリストにすると.

main = getProblems >>= mapM_ (putStrLn.show.solve)
getProblems = 
    do
    n <- liftM (head.map read.words) getLine
    replicateM n getProblem
getProblem =
    do
    r <- getNum
    s <- liftM (head.map read.words) getLine
    ws <- replicateM s getNum
    return (r, ws)
    where 
    getNum = liftM (head.map read.words) getLine :: IO(Double)

あとは EOF で終了という不親切な場合もあるが... 面倒なのでやめとこう.各データセット内の値の取得は,replicateM と liftM (map read.words) getLine と叫べば大体は入力できそう.面倒なのは read の型を明示しとかないとこける可能性があることだろう.

みなみけ2巻限定版

売れているのか売れていない(少ない)のかよくわからない上にいろいろと酷評を受けているみたいで.なぜかアマゾンで予約してあって今日届いてたりするのだが,今更なぜ注文したのか疑問に思ったり.ま,いいか.

ICPCアジア予選本番

一人でやるとしたら簡単なほうから5問は確実に行くだろうけど... 残りの問題はコーディングが面倒な感じかと思われる.間違っても Haskell では書きたくない.ProblemA でさえHaskell だと面倒だ(インデックス使えんので).

import Control.Monad
main = getProblems >>= mapM_ (putStrLn.show.cnt)
getProblems = do
              n <- liftM read getLine
              if n==0 then return [] else liftM (n:) getProblems
 
primes = let p (x:xs) = x:p (filter (\y -> not (mod y x ==0)) xs) in p [2..]
cnt n = cn primes primes 0 0
 where
 cn ps qs sum c = 
     if sum >= n then cn (tail ps) qs (sum-head ps) (c+if sum==n then 1 else 0)
     else (if n < head qs then c
           else cn ps (tail qs) (sum+head qs) c)

素数の生成はエレガントに書けるけど入出力がうざい.ところで Y コンビネータのラムダ式ってどうだっけ? olymorphic lambda calculus もよくわからん... free theorem の根拠が...

八王子へ

同じ東京都内だけど移動がめんどうだ... 横浜線の本数が少ないなぁとか感じた今日この頃.とりあえずJavaチャレンジが面白くない競技になっているような... 会津のヘビのほうが見てて楽しかったのになぁ.

体調不(ry

頭痛し.明日からお出かけできるのだろうか...

«Prev || 1 | 2 | 3 |...| 1194 | 1195 | 1196 |...| 1252 | 1253 | 1254 || Next»
Search
Feeds

Page Top