nobsun #6405(2008/06/02 00:47 GMT) [ Haskell ] Rating1/1=1.00
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
module Main where import Data.List import qualified System.IO.UTF8 as U import System.IO.Unsafe import System.Random shuffle :: StdGen -> [a] -> ([a],StdGen) shuffle g xs = shuffle' [] g (length xs,xs) where shuffle' acc g (0,_) = (acc,g) shuffle' acc g (n,xs) = case randomR (0,n-1) g of (i,g') -> case splitAt i xs of (ys,z:zs) -> shuffle' (z:acc) g' (n-1,ys++zs) facts = scanl (*) 1 [1..30] monsters = ["焼きたてパン","強いシャチホコ","もんじゃ焼き一年生","怪人ホタテ男","ニセ勇者","逃げ足の早いアレ","睡魔","煩悩","愛らしい子犬の中の人","恋するスズメバチ","勇敢なクマンバチ","信じられない物","勇者の師匠","浮遊する鎧","怪盗ドボン","闇の招き猫","誘惑のカスタードクリーム","しょっぱすぎる籠手","カレー味の兜","光沢だけは一流の盾","若葉マークのモンスター","新緑の季節","梅雨時の車両のニオイ","暑すぎる夏","新宿らしき何か","やたら発達したドーナツ","育ちすぎたクマー","なごやかな雰囲気","凍り付いた気配","忍び寄る恐怖"] skills = ["お豆腐の買い方","鉛筆の買い方","消しゴムの使い方","メモの取り方","攻撃に使えないこともない呪文","裏町の歩き方","森林浴","珈琲の味","しじみのみそ汁の作り方","回覧板の回し方","郵便物の投函方法","立ち話のコツ","猫の呼び方","犬の呼び方","カラスの呼び方","鳩専用豆鉄砲","秘密の趣味","速く走るコツ","剣の使い方","斧の使い方","まきわりで、まっきわりわり","聖なる祈り","孤独","涼しく過ごすコツ","お洒落のコツ","卵をふわっと焼く方法","ごはんの研ぎ方","油汚れの対応方法","大人の振るまい","Suicaの使い方"] main = do { g <- getStdGen ; let (ms,g') = shuffle g monsters ; let (ss,_) = shuffle g' skills ; U.putStrLn $ unlines $ intersperse sep $ map showStep $ zip [1..30] $ zip3 facts ms ss } showStep (l,(v,m,s)) = unlines $ ["*-----" ,m++"を倒した!" ,show (facts !! l) ++ "の経験値を得た." ,"勇者は"++(if l==30 then "また," else show l ++"に")++"レベルが上った!" ,"勇者は"++(if l==30 then "ふと空しさ" else s) ++"を覚えた."] sep = unlines ["そして," ,"かくかくかじかで,山あり谷ありの冒険が続いがが割愛."]
Rating1/1=1.00-0+
1 reply [ reply ]
nobsun #6407(2008/06/02 09:33 GMT) Rating0/0=0.00
書きわすれましたが、日本語(utf8)を表示するにはutf8-stringというパッケージが提供するSystem.IO.UTF8モジュールが必要です。
see: utf8-string
[ reply ]
nobsun
#6405()
[
Haskell
]
Rating1/1=1.00
Rating1/1=1.00-0+
1 reply [ reply ]