C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.10670 の関連記事表示

<< 0 >>
■10670  Re[9]: プログラムの意見交換はいかがですか
□投稿者/ れい -(2007/11/23(Fri) 13:18:27)
    2007/11/23(Fri) 13:32:27 編集(投稿者)

    No10667 (επιστημη さん) に返信
    > 芋虫がこの世に生を受けたときの
    > - どっち向いてるか
    > - この世に境界があるならその境界と
    >  芋虫の位置と
    > をください。
    >
    > directionが東西南北で定義されているならどっち向いてるかは要りません。
    > # 立方体の芋虫がパタパタ転がってくよなイメージね。

    GetNextDirectionの返り血は次に芋虫がどちらに移動するか、で定義します。
    前、右、左です。
    右に行った時、芋虫は右を向きます。
    左に行った時、芋虫は左を向きます。
    与えられる配列worldは芋虫の向きに応じて回転して渡されます。

    世界には境界はありません。
    無限に進めますが、ループしています。

    ですので、芋虫の初期の方向と位置は考慮しなくていいことになります。
    ランダムに与えられていると思ってください。

    もうちょっときちんとインタフェースを考えてみました。

    namespace WormWorld {

    public interface IWorm {
    string Name { get; }
    direction GetNextDirection( leafstate[] world );
    }

    public enum leafstate {
    worm = -1,
    leaf = 0,
    hole = 1
    }

    public enum direction {
    right = -1,
    forward = 0,
    left = 1
    }
    }

    ターン制で動きます。
    毎ターン1回GetNextDirectionが呼ばれます。
    動いた結果、他の芋虫がいたら、両方とも死にます。

    配列は芋虫の現在向いてる方向を上とすると

    00 01 02 03 04 05 06
    07 08 09 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 43 44 45 46 47 48

    という感じで与えられて、
    world[0]が左前方、world[6]が右前方、
    world[42]が左後方、world[48]が右後方になります。
    world[24]は常にwormになります。

    実際に競技をするときは、適当な密度でwormが配置されるようにします。
    統計性を高めるため、同じアルゴリズムの虫を複数配置しようと思っています。

    メモリの消費量は今のところ制限を考えていません。
    リフレクションしたりディスアセンブルしたりして他人の情報を覗くのは禁止です:D
    一定時間してもGetNextDirectionから帰らない場合はそのまま飢え死にです。

    どうでしょう?
    だいぶ簡単なルールではないかと。
記事No.10626 のレス /過去ログ24より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -