« STRAIGHTJACKET | メイン | CodeDom でコードを動的にコンパイルして実行する »

「憂鬱な勇者」を F# で作ってみた

F# で書いてみました。単体で起動します。

open System
open System.Collections.Generic
open Int32
open Big_int

let monsters = [|"焼きたてパン"; "強いシャチホコ"; "もんじゃ焼き一年生"; "怪人ホタテ男"; "ニセ勇者"; "逃げ足の早いアレ"; "睡魔"; "煩悩"; "愛らしい子犬の中の人"; "恋するスズメバチ"; "勇敢なクマンバチ"; "信じられない物"; "勇者の師匠"; "浮遊する鎧"; "怪盗ドボン"; "闇の招き猫"; "誘惑のカスタードクリーム"; "しょっぱすぎる籠手"; "カレー味の兜"; "光沢だけは一流の盾"; "若葉マークのモンスター"; "新緑の季節"; "梅雨時の車両のニオイ"; "暑すぎる夏"; "新宿らしき何か"; "やたら発達したドーナツ"; "育ちすぎたクマー"; "なごやかな雰囲気"; "凍り付いた気配"; "忍び寄る恐怖"|];;
let skills = [|"お豆腐の買い方"; "鉛筆の買い方"; "消しゴムの使い方"; "メモの取り方"; "攻撃に使えないこともない呪文"; "裏町の歩き方"; "森林浴"; "珈琲の味"; "しじみのみそ汁の作り方"; "回覧板の回し方"; "郵便物の投函方法"; "立ち話のコツ"; "猫の呼び方"; "犬の呼び方"; "カラスの呼び方"; "鳩専用豆鉄砲"; "秘密の趣味"; "速く走るコツ"; "剣の使い方"; "斧の使い方"; "まきわりで、まっきわりわり"; "聖なる祈り"; "孤独"; "涼しく過ごすコツ"; "お洒落のコツ"; "卵をふわっと焼く方法"; "ごはんの研ぎ方"; "油汚れの対応方法"; "大人の振るまい"; "Suicaの使い方"|];;

let e = new List<big_int>();;

let max_num = 30;;

let rec ex (r:big_int) current maximum =
if current < maximum then
ex (r * (big_int_of_int current)) (current + 1) maximum
else
r * (big_int_of_int current);;
let random = new Random();;

let main =
let max_num = 30 in
for x = 1 to max_num do
e.Add(ex (big_int_of_int 1) 1 x); done;;
let max_num = 29 in
for x = 1 to max_num do
let r2 = random.Next(monsters.Length) in
let r3 = random.Next(skills.Length) in
System.Console.WriteLine("{0}を倒した!", monsters.[r2]);
System.Console.WriteLine("{0}の経験値を得た。", e.[x - 1]);
System.Console.WriteLine("勇者は{0}にレベルが上がった!", x);
System.Console.WriteLine("勇者は、{0}を覚えた。", skills.[r3]);
done;;
let r1 = random.Next(monsters.Length) in
System.Console.WriteLine("{0}を倒した!", monsters.[r1]); System.Console.WriteLine("{0}の経験値を得た。", e.[29]); System.Console.WriteLine("勇者は、また、レベルが上がった!"); System.Console.WriteLine("勇者は、ふと空しさを覚えた。");;

F# なので再帰で書きたかったのですが。今回は for ループを使いました。さすがにこれを再帰で書くのはかなり迂遠だったので。ソースコードを kaijyou.7z に入れておきました。

Technorati tags:

より、F# らしく手直ししたバージョンを作ってみました。さらに、非同期実行を使って手直ししたバージョンも作りました。

このエントリーをはてなブックマークに追加 Save This Page to del.icio.us このエントリーをlivedoorクリップに追加 このエントリーをニフティクリップに追加 このエントリーをBuzzurlに追加このエントリーをBuzzurlに追加 このエントリーをFC2ブックマークへ追加 このエントリーをnewsingへ追加 このエントリーをYahoo!ブックマークに追加

トラックバック

このエントリーのトラックバックURL:
http://www.cworld2000.com/cgi-bin/mt/mt-tb.cgi/425

この一覧は、次のエントリーを参照しています: 「憂鬱な勇者」を F# で作ってみた:

» 憂鬱な勇者の移植、ありがとうございました! 送信元 どんなジレンマ
「憂鬱な勇者」を F# で作ってみた (GrayRecord) gornさんはじめまして。はずかしながら、F#という言語、gornさんのソースコードで初... [詳しくはこちら]

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2008年06月02日 00:48に投稿されたエントリーのページです。

ひとつ前の投稿は「STRAIGHTJACKET」です。

次の投稿は「CodeDom でコードを動的にコンパイルして実行する」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

検索

この Weblog について

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type 3.35