sue445の一人言・2006年3月分


1 7 9 13 16 20 22 24 28 31


3月1日(水)

[雑]エイプリルフールのこと(予告)

エイプリルフールまであと1ヶ月ですが、今年は去年ほど大規模なことはやりません(笑) あれ以上のことなんて無理でしょうw

シンプルに一発ネタでいきます。


3月7日(火)

[雑]近況

アニメ見たり音楽聴きながらだらだらプログラム作ってます。もう春休みも残り半分か(笑)


3月9日(木)

最近ロクな日記を書いてなかったので、たまにはまとも(?)なことを書いてみます(^^;

[C++/数学]階乗テーブル作成

この場合の階乗テーブルとは、例えば3!の場合

[1 2 3]
[1 3 2]
[2 1 3]
[2 3 1]
[3 1 2]
[3 2 1]

のように、n!通りの組み合わせのテーブルのことです。

ひょっとしたらちゃんとした名称があるのかもしれませんが、とりあえずここでは「階乗テーブル」と命名しておきます。

で、とあるデータ解析でこういうテーブルを作って総当り的に調べることがあったので作ってみました。

#include <vector>

using std::vector;

// n!分のテーブルを生成する(汗
void MakeFactorialTable(int n, vector< vector< int > >& vctTable)
{
    vctTable.clear();

    if(n==1){
        vector< int > v;
        v.push_back(n);
        vctTable.push_back(v);
    }
    else if(n>1){
        // (n-1)!の階乗テーブルを作成する
        vector< vector< int > > vct;
        MakeFactorialTable(n-1, vct);

        // (n-1)!の階乗テーブルの末尾に自分自身(n)を追加
        int max = vct.size();
        for(int i = 0; i < max; i++){
            vector< int > v = vct[i];
            v.push_back(n);
            vctTable.push_back(v);
        }

        const vector< vector< int > > vctOriginal = vctTable;

        // オリジナルデータの全要素に1〜(n-1)を加算して、それらをvctTableに追加する
        max = vctOriginal.size();
        for(int i = 1; i < n; i++){
            for(int j = 0; j < max; j++){
                vector< int > v = vctOriginal[j];
                int max2 = v.size();
                for(int k = 0; k < max2; k++){
//                  v[k]--;
//                  v[k] = (v[k] + i) % n;
//                  v[k]++;
                    v[k] = ((v[k] - 1 + i) % n) + 1;
                }
                vctTable.push_back(v);
            }
        }
    }
}

アルゴリズム自体は

  1. (n-1)!の階乗テーブルを作成して、末尾(ないしは先頭)にn(自分自身)を追加
  2. 前述のテーブルの全要素に1〜n-1を加算

という割とシンプルなもの。

ぶっちゃげSTLの使い方よく分かってないのでもっと最適化かかると思います(ぉ

ちなみに10!(=3628800)通りの階乗テーブルを生成するのに1分くらいかかりました(汗

[ネット]魂魄復活

mixiの方にも書きましたが、コンテストパークが「コンテストパークWeb」として復活。蝶期待age。


3月13日(月)

[ネット]節穴ミラー

数日前からずっと鯖落ちのようなので、多分このまま移転先になりそうな予感。ずっと前も鯖の調子が悪くて移転したような(^^;

[HP]拍手レス

> 階乗オーダ…ガクガクブルブル(;゚Д゚) by か

階乗は雪だるま式に値が大きくなるのでまるで高利g(ry

> えぇと,順列ってことでいいのかなぁ.だとしたらSTLにこんなんがありますね(http://www.prefield.com/wiki/index.php?next_permutation),やはり先人(ry by Richard

掲示板でトリノさんが2つ書いてたやつの後者の方ですね。やはり先人は偉大だorz


3月16日(木)

[HP]東方メモリマネージャー Ver1.16

別名:射命丸文の写真館(笑)

ベストショットファイルのPNG変換について神主にメールで確認してみましたが、2週間経っても返事が無かったので黙認されたと判断。


3月20日(月)

[東方]花映塚北九州オフ

木村圭さん主催の花映塚北九州オフに参加してきました。関係者の方々お疲れ様です。久しぶりに昔のサークルの先輩にも会えました(^^;

やったこと

微妙に東方に関係ないことも混じってますがw


3月22日(水)

[東方?]SIMPLE100 THEシューティング 妖怪退治

他のところでもさんざんネタにされているやつですが一応

「インスパイヤ」って便利な言葉ですねw

(個人的には1個上のが中国、2個上のが琥珀さんに見えて仕方ないですが)


3月24日(金)

[プログラム]コンテストパーク投稿予定作品&アイコン募集

今のところ投稿予定作品は2つ。

その1:RGSS外部キーコンフィグツール

本家のキーコンフィグがあまりにも使いにくかったので最近の同人ゲーム風にアレンジw

その2:RGSS-RTP Installer

ツクールXPのRTPに特化したインストーラ。左がインストーラ本体で、右がインストーラの設定を編集するエディタ。

内部でバージョン情報チェックをしているので古いバージョンを間違えてインストールしない安心設計。(はちくまの修正パッチインストーラ(ほっしーさん作)みたいなもの)

エディタではインストールしているRTPの一覧も確認できます。

この2つで製作に1週間かかっていない件(笑)

※キーコンフィグツールが2日でインストーラ(本体+エディタ)が3日。

 

日記内でインストーラ本体のプログラムアイコンをひっそりと募集してみます。

↑よりも絵心のあるアイコンを描ける人がいたらメールで送りつけてください(画像サイズは32×32)。お礼とかは特に無いですが、マニュアルの「スペシャルサンクス」に名前が載ります。

コンパクの締め切りが5月15日なのでアイコンの募集もそのくらいまで。もしアイコンの応募が無ければ前述のセンスの無いアイコンが出回ります(ぉ

2006/04/08追記)アイコン描いてくれる人が見つかったので募集を中止します。


3月28日(火)

[ゲーム]「まわるめいどさんをねみぎ」Developer's kit

現状で作っているプログラムがあるので僕は参加しません。

ていうか僕はゲームプログラマーではないし(ぇー


3月31日(金)

[雑]エイプリルフールイブ

よしお前ら、最後の追い込みがんばれ(笑)