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


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

いろんな言語で宿題スレ



64 名前:Haskellで mailto:sage [2009/05/31(日) 16:20:18 ]
import Data.List
import Control.Monad

data Position = Shoe | Skirt | Chest | Hair
  deriving (Show, Eq, Ord)

solve :: [String]
solve = do
  -- ちょうど一万円札・千円札・百円玉・十円玉があるわ。今からこのお金を・・・
  let money = [10000, 1000, 100, 10]
  -- 髪の中、胸のポケット、スカートのポケット、靴の中に・・・それぞれ一つずつ隠します
  (position, content) <- mappings money [Hair, Chest, Skirt, Shoe]
  -- 一万円札は髪の中
  guard $ position 10000 == Hair
  -- 千円札は十円玉より上の位置
  guard $ position 1000 > position 10
  -- スカートには胸の10倍のお金が入っている
  guard $ content Skirt == 10 * content Chest
  -- それでは、全てのお金の位置は?
  let disp n = show (position n) ++ "(" ++ show n ++ ")"
  return $ unwords $ map disp money

main = putStr $ unlines solve

mappings :: (Eq a, Eq b) => [a] -> [b] -> [(a -> b, b -> a)]
mappings xs ys = do
  ys' <- permutations ys
  return (make xs ys', make ys' xs)
  where
    make from to = \value -> case lookup value (zip from to) of
      Just r -> r
      Nothing -> error "lookup failed"






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

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

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