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

  1. #include<iostream>  
  2.   
  3. int main()  
  4. {  
  5.     for (int n; std::cin >> n, n;)  
  6.     {  
  7.         int s = 1, d[] = {2, 3, 5, 4, 1}, i, t, a, b;  
  8.   
  9.         for (i = 0; i++ < n; s += d[4])  
  10.         {  
  11.             char c[9], e;  
  12.             std::cin >> c;  
  13.             e = *c;  
  14.             a = 0;  
  15.               
  16.             if (e != 'R' && e != 'L')  
  17.             {  
  18.                 e == 'N' ? a = 2, b = 0 : e == 'E' ? a = 1, b = 3   
  19.                      : e == 'W' ? a = 3, b = 1 : b = 2;  
  20.                 d[a] = d[4];  
  21.                 d[4] = d[b];  
  22.                 d[b] = 7 - d[a];  
  23.             }  
  24.             else  
  25.             {  
  26.                 e == 'R' ? : a = 2;  
  27.                 t = *d;  
  28.                 *d = d[1 + a];  
  29.                 d[1 + a] = d[2];  
  30.                 d[2] = d[3 - a];  
  31.                 d[3 - a] = t;  
  32.             }  
  33.         }  
  34.         std::cout << s << '\n';  
  35.     }  
  36.   
  37.     return 0;  
  38. }  
バリンバリンの自分なりのショートコーディング.
納得の331 Bytesです.

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

2010年11月3日水曜日

行列と転置行列の積


  1. #include <iostream>  
  2. #include <boost/numeric/ublas/matrix.hpp>  
  3. #include <boost/numeric/ublas/io.hpp>  
  4. using namespace std;  
  5. using namespace boost::numeric::ublas;  
  6.   
  7. int main()  
  8. {  
  9.     matrix<int> A(2, 2), B(2, 2);  
  10.   
  11.     for (int i = 0; i < 2; i++)  
  12.     {  
  13.         for (int j = 0; j < 2; j++)  
  14.         {  
  15.             A(i, j) = i * 2 + j + 1;  
  16.             B(i, j) = i * 2 + j + 2;  
  17.         }  
  18.     }  
  19.   
  20.     cout << A << endl;  
  21.     cout << B << endl;  
  22.     cout << prod(A, trans(B)) << endl;  
  23.   
  24.     return 0;  
  25. }  
  26.   
  27. /* execution result 
  28. [2,2]((1,2),(3,4)) 
  29. [2,2]((2,3),(4,5)) 
  30. [2,2]((8,14),(18,32)) 
  31.  
  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でした.もうちっと上げたいものですね.

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

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