2010年11月29日月曜日

第4回UEC杯

第4回UEC杯,自分は
1勝5敗とな結果でした.
いろいろ勉強不足だと感じ,
次の大会に向けて,また頑張りたいと思います.

ちなみに優勝プログラムはFuegoでした.
おめでとうございます.

最後に,UEC杯運営委員会の皆様,お疲れさまでした.ありがとうございました.
来年はそちら側でも役立てるできるように,これから楽しい経験をしていきたいと思います.

2010年11月19日金曜日

もうそろそろUEC杯

謎のGUI
もうそろそろでUEC杯です.
参加できるか微妙な感じ.
観てるだけでも勉強になるし・・・.
まだまだ弱いし・・・.
最近方針変更してるし・・・.

囲碁って難いっすよね.Σ(・口・)

2010年11月11日木曜日

勢い余って買っちゃいました

はじめての「Go言語」 (I・O BOOKS)

勢い余って買っちゃいました.
もちろん,その勢いを作ったものがありまして,
単にGo言語を取り上げていたからではなく,
著者を拝見したとき,感動したからです.

著者:茨木 隆彰
1990年   兵庫県産まれ おー同世代!! w( ̄o ̄)w オオー!
神戸高専 電子工学科在学中 おー高専生!!! w( ̄▽ ̄;)wワオッ!!

茨木さんマジぽねぇっす (゚o゚;)
何か勇気付けられました.
ありがとうございます.

本の内容はGo言語の基本構文とか,
並列処理の仕方などの紹介がされていて,
本を用いた良いGo言語の導入になると思いました.
読んでてGo言語の面白さが伝わってきました.
個人的に不満だったところは,
多言語との比較,特に数値的なものがなかったことです.
あと細かい点ではインデントがときどき変なところ(これは仕様かも).

にして凄い.
世の中の高専生は頑張ってる.
俺も頑張ろうと思った今日です.(*゚▽゚*)

2010年11月9日火曜日

AOJ Volume 5 Problem 0502 : Dice

#include<iostream>

int main()
{
    for (int n; std::cin >> n, n;)
    {
        int s = 1, d[] = {2, 3, 5, 4, 1}, i, t, a, b;

        for (i = 0; i++ < n; s += d[4])
        {
            char c[9], e;
            std::cin >> c;
            e = *c;
            a = 0;
            
            if (e != 'R' && e != 'L')
            {
                e == 'N' ? a = 2, b = 0 : e == 'E' ? a = 1, b = 3 
                     : e == 'W' ? a = 3, b = 1 : b = 2;
                d[a] = d[4];
                d[4] = d[b];
                d[b] = 7 - d[a];
            }
            else
            {
                e == 'R' ? : a = 2;
                t = *d;
                *d = d[1 + a];
                d[1 + a] = d[2];
                d[2] = d[3 - a];
                d[3 - a] = t;
            }
        }
        std::cout << s << '\n';
    }

    return 0;
}
バリンバリンの自分なりのショートコーディング.
納得の331 Bytesです.

問題はサイコロに関する問題なんですが,
回転の種類を大きく2つに分けることができて,
関数化できるので,上記のようなショートコーディングが行えてます.

2010年11月3日水曜日

行列と転置行列の積


#include <iostream>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
using namespace std;
using namespace boost::numeric::ublas;

int main()
{
    matrix<int> A(2, 2), B(2, 2);

    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            A(i, j) = i * 2 + j + 1;
            B(i, j) = i * 2 + j + 2;
        }
    }

    cout << A << endl;
    cout << B << endl;
    cout << prod(A, trans(B)) << endl;

    return 0;
}

/* execution result
[2,2]((1,2),(3,4))
[2,2]((2,3),(4,5))
[2,2]((8,14),(18,32))

*/ 


上のプログラムは下記の計算を行っています.


スッキリ書けて素晴らしい.d(゚∀゚)b

2010年11月1日月曜日

今年一番不真面目に取り組んじまった

    
 テスト画像           圧縮データによる復元画像

一目で荒さがわかりますね.ニューラルネットには砂時計型(64-16-64)を使用しています.
プログラムは下の本の5章に書かれていることを参考に実装しました.


学習回数は上の画像では1000回です.
問題の圧縮率は,元画像は192.1 KB,圧縮データは49.1 KBなので,約25.6%となっています.
圧縮データの構成は,画像のヘッダー情報,中間層と出力層の数,中間層と出力層間の重み,
出力層の各バイアス,中間層の各出力です.

GUIも作成し,内容は圧縮したいデータをドラッグ&ドロップしたら圧縮データが作成され,
その復元画像が表示されるものです.

カラー画像のPNSR(peak signal-to-noise ratio)ってどう算出するのかわからないんだけど,
MSEをRGBに対してそれぞれ求めて足し合わせたものを3で割った物を使って,
PNSRを求めると約26.8 dBでした.もうちっと上げたいものですね.

縦に線が入ってる理由は,おそらく入力を
左上から右に順々に繰り返しているからだと考えられます.

改善+オリジナリティが必要ですが,また発表ではミスりましたが,
質疑応答もしっかりと出来ませんでしたが,
俺の本命はゲーム情報学なので,これからはそっちに熱を注ぎたいと思います.