The beast of halfpace

日々のメモ

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  75  : 記事  0  : コメント  236  : トラックバック  7

ニュース

Mozilla Firefox ブラウザ無料ダウンロード

記事カテゴリ

書庫

日記カテゴリ

2008年7月9日 #

値の配列をソートするのではなく、昇順のインデックスリストを作る。

 

#include <iostream>
#include <iterator>
#include <algorithm>

using namespace std;

int val[10];
int idx[10];
int top;

void print_idx(void)
{
    printf("Top=%2d ", top);
    for(int i = 0; i < 10; i++) {
        printf("[%2d,%2d]", val[i], idx[i]);
    }
    putchar('\n');
}

int main(void)
{
    int    i;
    /*
     * ランダムな配列作成とインデックスリストの初期化
     */
    for(i = 0; i < 10; i++) {
        val[i] = i;
        idx[i] = -1;
    }
    random_shuffle(val, val+10);

    /*
     * ソート
     */
    top = 0;
    for(i = 1; i < 10; i++) {
        if(val[top] > val[i]) {
            idx[i] = top;
            top = i;
            print_idx();
        } else {
            int pos = top;
            while(idx[pos] != -1) {
                if(val[idx[pos]] > val[i]) {
                    idx[i] = idx[pos];
                    idx[pos] = i;
                    break;
                }
                pos = idx[pos];
            }
            if(idx[pos] == -1) {
                idx[pos] = i;
            }
            print_idx();
        }
    }

    return 0;
}

----------

実行結果

Top= 1 [ 8,-1][ 1, 0][ 9,-1][ 2,-1][ 0,-1][ 5,-1][ 7,-1][ 3,-1][ 4,-1][ 6,-1]
Top= 1 [ 8, 2][ 1, 0][ 9,-1][ 2,-1][ 0,-1][ 5,-1][ 7,-1][ 3,-1][ 4,-1][ 6,-1]
Top= 1 [ 8, 2][ 1, 3][ 9,-1][ 2, 0][ 0,-1][ 5,-1][ 7,-1][ 3,-1][ 4,-1][ 6,-1]
Top= 4 [ 8, 2][ 1, 3][ 9,-1][ 2, 0][ 0, 1][ 5,-1][ 7,-1][ 3,-1][ 4,-1][ 6,-1]
Top= 4 [ 8, 2][ 1, 3][ 9,-1][ 2, 5][ 0, 1][ 5, 0][ 7,-1][ 3,-1][ 4,-1][ 6,-1]
Top= 4 [ 8, 2][ 1, 3][ 9,-1][ 2, 5][ 0, 1][ 5, 6][ 7, 0][ 3,-1][ 4,-1][ 6,-1]
Top= 4 [ 8, 2][ 1, 3][ 9,-1][ 2, 7][ 0, 1][ 5, 6][ 7, 0][ 3, 5][ 4,-1][ 6,-1]
Top= 4 [ 8, 2][ 1, 3][ 9,-1][ 2, 7][ 0, 1][ 5, 6][ 7, 0][ 3, 8][ 4, 5][ 6,-1]
Top= 4 [ 8, 2][ 1, 3][ 9,-1][ 2, 7][ 0, 1][ 5, 9][ 7, 0][ 3, 8][ 4, 5][ 6, 6]

posted @ 0:28 | Feedback (0)

2008年7月5日 #

ここで書いた酒の内Highlander Inn Glen Grant 37yoの置いてあるお店を発見した。

職場から数分歩いたところにその名もズバリHighlander innというお店があったのだ。

今の今まで気付かなかった。

highlander_inn

早速昨夜行ってみたら置いてあったので飲んできた。ついでにGlenfarclas 33yoも。

posted @ 23:34 | Feedback (2)

2008年6月28日 #

世間ではiPhoneの話題ばかりですが、本日発売になったWillcom 03 (東京仕様っぽい名前だこと) を購入しました。Willcom Coreで高速化されることを信じて。

ades03

まだ少ししか触っていませんが、キーボードはアドエスよりも軽くなって打ちやすくなった気がします。

フルフラット化に伴いテンキーが無くなりましたが、タッチしたときに振動するので思っていたよりも違和感が無いです。

Operaは9.5になりUIがカッコ良くなりました。

SDHCドライバ入れて4GB SDHCカードも認識してくれました。

 

これからセットアップです。

posted @ 0:14 | Feedback (3)

2008年6月25日 #

元ネタ

僕は3項演算子を禁止している職場で仕事をしたことがある。

元ネタを読んだ後思いついたんだけど、数値限定でこんなのはどうだろう?

#define SAN_KO_NO_KAWARI(pr, lv, rv) ((!!(pr) * (lv)) + (!(pr) * (rv)))

これなら3項演算子使わずに済むよ。

# prの部分が2回評価されるのが問題だけど

posted @ 23:29 | Feedback (2)

2008年6月10日 #

言いたいことは色々ありますが、親切ですよね。駅前でタダで写真撮ってくれて、申し込みの郵送料もタダ。家にもタダで送ってきてくれて勿論カード代もタダ

こんなところがディライト

taspo

posted @ 23:25 | Feedback (2)

2008年6月5日 #

こことかここに触発されて3種類ほど書いてみた。

#include <cstdio>
#include <cstdlib>

using namespace std;

int test_val;

bool test1(void) { printf("test1()\n"); return test_val > 1; }
bool test2(void) { printf("test2()\n"); return test_val > 2; }
bool test3(void) { printf("test3()\n"); return test_val > 3; }
bool test4(void) { printf("test4()\n"); return test_val > 4; }
bool test5(void) { printf("test5()\n"); return test_val > 5; }
void test_ok(void) { printf("Test OK\n"); }

bool do_test1(void)
{
    bool result = false;
    printf("Test pattern 1\n");

    do {
        if(!test1()) break;
        if(!test2()) break;
        if(!test3()) break;
        if(!test4()) break;
        if(!test5()) break;
        test_ok();
        result = true;
    } while(0);

    return result;
}

bool do_test2(void)
{
    bool (*tests[])(void) = {
        test1,
        test2,
        test3,
        test4,
        test5,
        NULL,
    };
    int    i;
    bool result = true;

    printf("Test pattern 2\n");

    for(i = 0; tests[i] != NULL && result; i++) result = tests[i]();
    if(result) test_ok();

    return result;
}

bool do_test3(void)
{
    printf("Test pattern 3\n");

    return test1() && test2() && test3() && test4() && test5() && (test_ok(), true);
}

int main(int argc, const char* argv[])
{
    bool result = false;
    if(argc < 3) return 0;

    test_val = atoi(argv[2]);
    switch(atoi(argv[1])) {
    case 1: result = do_test1(); break;
    case 2: result = do_test2(); break;
    case 3: result = do_test3(); break;
    }

    if(result) printf("全テスト正常終了");

    return 0;
}
 

 

コンパイルして実行するときに

[program name] テストパターン エラーを返す位置

で3種類の挙動を見ることが出来ます(どれも同じだけど)

 

ちょっとトリッキーなのはテストパターン3ですかね。1行で済んですっきり。

C++で書いたのはboolを使いたかったから。

 

posted @ 21:41 | Feedback (0)

2008年6月3日 #

プログラム

#include <iostream> 

class base {
public:
    base() { std::cout << "base::base()" << std::endl; }
    base(int a) { std::cout << "base::base(" << a << ")" << std::endl; }
    virtual ~base() {}
}; 

class derived : virtual public base {
public:
    derived() { std::cout << "derived::derived()" << std::endl; }
    derived(int a) : base(a) { std::cout << "derived::derived(" << a << ")" << std::endl; }
}; 

class more_derived : virtual public derived {
public:
    more_derived() { std::cout << "more_derived::more_derived()" << std::endl; }
    more_derived(int a) : derived(a) { std::cout << "more_derived::more_derived(" << a << ")" << std::endl; }
}; 

template<typename T> void func(const T&) { std::cout << "func()" << std::endl; }
template<> void func<derived>(const derived&) { std::cout << "func<derived>()" << std::endl; } 

int main(int argc, const char* argv[])
{
    func(base(1));
    std::cout << "----------" << std::endl;
    func(derived(2));
    std::cout << "----------" << std::endl;
    func(more_derived(3))

    return 0;
}

※記述ミス(不足)を赤字で修正しました

実行結果

base::base(1)
func()
----------
base::base(2)
derived::derived(2)
func()
----------
base::base()
derived::derived(3)
more_derived::more_derived(3)
func()

 

仮想継承したときには明示的に先祖クラスのコンストラクタを指定していない場合デフォルトコンストラクタが呼ばれる

親クラスで特殊化されていても派生クラスには適用されない

今まで知らずに使っていることはあっても殆ど自分で書くことのない機能だったから知らんかった。

posted @ 20:33 | Feedback (2)

以前は用途毎にPCを分けたりしていたのですが、やっぱり1台で全部出来た方が便利なので、最近PCをちょこちょことパワーアップしていました。

現在こんな構成になっています。

CPU Phenom 9550
M/B GA-MA78GM-S2H
Memory 2G*4
Video SAPPHIRE RADEON HD3650
HDD1 WD 3200AAKS (320GB)
HDD2 WD10EACS-D6B0 (1TB)
DVD PIONEER DVR-215D
Sound E-MU 0404 SE
TV Tuner Leadtek PxPVR2200

OSはWindows Vista Ultimate 64bit

中身はこんな感じ。

machine 
余っていたSI-120+12cmファンが中々の威圧感。

 

今回はAHCIでOSをインストールしたのでマザーボード背面のeSATAインターフェースに外付けHDDを繋ぐとUSB HDD並の手軽さで利用できます。速度は内臓HDDと遜色ないので非常に快適です。

 

しかし、OSをVista64にしてしまったので、サウンドとテレビチューナーはかなり限定されてしまいました。

サウンドは手持ちのM-AUDIO AudioPhile 2496を使おうかとも思ったのですが、AudioPhile 2496はβ版ドライバしか提供されていないのとE-MUのボードも使ってみたかったので、E-MU 0404 SEにしてみました。
RCAのアナログ音声入出力端子があるのは勿論のことデジタル入出力も光・同軸あり音も良好。PCはステレオに繋いであるし買ってきたCDはすぐにリッピングしておくので、ちょっと聴きにはCDプレイヤーを使う必要がなく便利です。
# SACDのDSD層がリッピング&再生できればもっといいのに…

 

テレビチューナーはほとんど選択肢が無いので、半ば仕方なくPxPVR2200にしました。
カードのアナログ音声出力をサウンドカードに繋いでいないと添付のTV視聴ソフトで音が出ないみたいですし、正直なところ画質も良いとは思えませんが、Windows Media Centerで観れば音声は出るし、ウィンドウを小さくすれば画質の悪さも気にならないので問題なし。

 

色々立ち上げた画面

screen_shot

画面の片隅にWMCを起動してテレビを観ながら、プログラムのお勉強用にVS立ち上げて、Linuxのお勉強用にVMWare+Debian。

翻訳ソフトで日本語→ドイツ語変換を試しつつPhotoshop Elementsでこのキャプチャ画面を加工。

 

画質が納得できないので結局録画マシンは残ったままですが、録画ファイルはNAS(玄箱Pro)に保存してメインマシンで鑑賞という流れなので、普段操作するPCは一台で済んでます。

posted @ 0:20 | Feedback (4)

2008年5月29日 #

普段ならmixiネタなんですが、今回のエントリはGoogle先生に引っかけてもらうためにこっちに書いてます。

 

探している酒がありまして、東京、千葉近郊で置いてあるお店を知っている方がいたらご連絡ください。

yamazak

スーパーのイオンで売っていた山崎。1989年蒸留のシェリー樽です。普通の山崎と違いオーナーズカスクですので、イオンが樽を買って瓶詰めして売っている物なので、この酒はイオン以外では買えません。

名古屋に住んでいた頃近所にあったイオンで見つけて買ったのですが、他の店舗では見かけたことがありません。

# ビックカメラのオーナーズカスクも飲んだことがないので探しています。

 

以下の2本は高いから買えないと思うので、置いてあるバーを教えてもらえると嬉しいです。

# 生まれ年の物なので本当なら買いたいんですけどね

grant33

ダンカンテーラー ピアレスコレクション グレングラント 33年 (1970)

DUNCAN TAYLOR PEERLESS COLLECTION GLEN GRANT 33yo (1970)

 

higra37

ハイランダーイン グレングラント 37年 (1970)

Highlander Inn Glen Grant 37 yo (1970)

 

3本共シェリー樽で、とても色の濃いモルトウィスキーです。

posted @ 0:03 | Feedback (2)

2008年5月28日 #

待ちに待ってた雅之&桃子の15年ぶりのNew Single

恋のフライトタイム ~12pm~
200805272340000

をヨドバシカメラ秋葉で買ってきたわけですが。

店員が初回特典と思われる鈴木雅之生写真(サイン入り)を僕の知らぬ間に袋に入れておりました。
200805272250000

家に帰ってびっくりです。僕にどーせーと言うつもりなんでしょう?

今時写真って…ポストカードでもないんだぜ

posted @ 0:09 | Feedback (2)