今年度も今日から長岡高専電算機部の活動が始まりました.
・昨年度は全国高専プログラミングコンテストにおいて準決勝進出
・パソコン甲子園において全国大会出場
・情報オリンピックにおいて敢闘賞受賞
と部員の活躍が目立ちました.
今年度においても新たに1年生を迎え活躍を期待したいところです.
2013年1月25日金曜日
2012年10月17日水曜日
プロコンについてくわーしく
えぇーとまぁ先に部長が書いてますが、全然内容がないのでちゃんと
書いてしまおうとね、そういうわけです。
去年はこんなこともしなかったけども言いたいことがあったりして
今年はなんだか文章を書くのが進んでしまいます。
結果は予行練習1位、1回戦4位、敗者復活4位と・・・
まぁ勝ちたかったけどしょうがないしょうがない。。。。。
さてはて
うちの長岡高専はどんなことをしていたのかというと、
4月
競技部門の課題が判明。
そのときのうちの部活の反応
「え、これ無理じゃね。」
「俺たち画像検出とかしたことないけど。」
「もう目視しかないんじゃねwww」
と、まぁこんな感じで、なにをすればいいのかもわからない感じで
なんだかんだいって1ヶ月終わってしまう。
5月
さて何もわからないなりに何かしてみよう
ってなことでいつもしている数字いじりをはじめる。
と言っても数字と言ったら総重量しかわからないじゃんか。
てことで3つの変数をもった1つの式から答えを出そうと
無理なことをひたすら模索・・・・
んで結局は
5.6a*1.3b*0.3c=total
というもう解がとんでもないことになる式を使って
組み合わせを出して絞り込むことに力を注ぐことに。
6月
やばい、テストしなきゃーとか言って
言い訳をしながらなかなか開発が進まない・・・
部長がDXライブラリでいけるんじゃねとかいって
やってはみていたが断念。。。
ここにきて公式からのQ&Aが公開。
「え、目視いいのかよwww」
「このカーペット邪魔だろ。」
「サイコロの誤差きつい。サイコロは高専で作らないのかよ。」
と、競技公開と同じような衝撃事実がたくさん出てくる。
7月
ここにきてopenCVなるものを使ってみようと提案。
しかーしここに来て問題が・・・
その問題は
・普段活動している学校のパソコンにopenCVが仕様上インストールできない
・openCVどころかvisual stidioすらいつも使っていないのに無理!!
・今から勉強して使えるのか
とまぁなんだか根本的にOUTな問題が・・・・ね。
ですが環境自体はなんとかUSBから読み込むってことでどうにか回避して
残りはまぁやるしかないだろってことで勉強をはじめる。
8月・9月
ここにきて大体画像をいじったりすることは
普通にできるようになる。
しかし、どうやって個数を数えたらいいのかわからずじまい・・・・
こんなんでいいのかと言いながらも夏休みに入り開発は凍結。。。。。
10月
もうあと数日でプロコンだということで
めちゃくちゃ焦り始める。
ここにきて部長がなんとサイコロの目を検出して数をかぞえる的な
アルゴリズムをかなりのスピードで書き始める。やぁびっくりww。
僕はと言うと、サイコロ画像認識をさせるプログラムにまっしぐらで、
サイコロの画像と、それ以外のオブジェクトの画像を集めては作り、
やり直しと、なかなかにうまくいかなくて、暗礁に乗り上げるどころか、
暗礁に沈んじゃってましたwww
プログラミングコンテスト前日
結局のところ
部長のサイコロの目からの検出+謎の式からのアプローチ
サブとして、目視+サイコロ画像認識
的な感じでしかいけないなと。
当日
予行練習をしてみる。
まず
・オブジェクトってあんな大きいのがしかも真ん中にドカンと置くのか
・サイコロ不自然じゃないか
・テーブルの上の影が異常なほどで2値化に影響
と、運営はやってくれましたよ。ええ今年も。
てなことで、対応するために2値化の仕様変更、謎の式アプローチの強化
目視のウエートをちょっと重くした。
1回戦
なかなかAフィールドの数値は良かったんだけども、
Oフィールドの数値が全然だめで
敗退してしまいます。
ここでの敗因は中のサイコロの数がかなりずれていたので
謎の式からでてくる小の数が200個を超えていたにもかかわらず、
それを解答としてしまったこと。
要するに画像からうまく検出しきれなかったという話。
初日の夜
まず、部長はサイコロの目の検出がもっと正確にできないと駄目だということで
デスマを開始。
僕はというと
まず初日の試合の公式解答をデータ化。そこから
謎の式を用いた組み合わせ表示をより正確なものに。
ここでは敗者復活仕様として50以上200以下のサイコロのときの組み合わせから
色々処理をしてかなりの精度まで引き上げ。
かーらーの
オブジェクト排除をより強化して、影の影響もそこまで出ないようにして
サイコロ検出器も強化を図る。
ちなみに目視をしていた方はお早めに寝ています。
敗者復活戦
1回戦はやだなーと思いつつ競技場へ
競技をしてみると
4位で敗退。
敗因はやはりAフィールドでの大の数がよくとれなかったこと。
まわりは人力なのかそうでないのかは知らいけど
うちはあくまでプログラムを使って競技したかった。
目視は補助でそれ以上でも以下でもない。
優勝は宇部高専さんでしたね。
去年も久留米の解答を見て真似るという離れ業をしていたので
ある意味納得です。
でも今回のプロコンは運営が
甘すぎたと思います。
せめて6月のQ&Aで人力を禁止するか。
当日の競技で鏡面や、人力では処理しきれない数千単位の個数など
もっとプログラミングコンテストになるための工夫をする必要があったと思う。
だからといってうちの部が勝てるかと言われたら微妙ですがwwww
きっと他高専さんならプログラミングでももっといい戦いができたはず。
なんともいえない競技部門でしたがいい勉強になってよかったです。
書いてしまおうとね、そういうわけです。
去年はこんなこともしなかったけども言いたいことがあったりして
今年はなんだか文章を書くのが進んでしまいます。
結果は予行練習1位、1回戦4位、敗者復活4位と・・・
まぁ勝ちたかったけどしょうがないしょうがない。。。。。
さてはて
うちの長岡高専はどんなことをしていたのかというと、
4月
競技部門の課題が判明。
そのときのうちの部活の反応
「え、これ無理じゃね。」
「俺たち画像検出とかしたことないけど。」
「もう目視しかないんじゃねwww」
と、まぁこんな感じで、なにをすればいいのかもわからない感じで
なんだかんだいって1ヶ月終わってしまう。
5月
さて何もわからないなりに何かしてみよう
ってなことでいつもしている数字いじりをはじめる。
と言っても数字と言ったら総重量しかわからないじゃんか。
てことで3つの変数をもった1つの式から答えを出そうと
無理なことをひたすら模索・・・・
んで結局は
5.6a*1.3b*0.3c=total
というもう解がとんでもないことになる式を使って
組み合わせを出して絞り込むことに力を注ぐことに。
6月
やばい、テストしなきゃーとか言って
言い訳をしながらなかなか開発が進まない・・・
部長がDXライブラリでいけるんじゃねとかいって
やってはみていたが断念。。。
ここにきて公式からのQ&Aが公開。
「え、目視いいのかよwww」
「このカーペット邪魔だろ。」
「サイコロの誤差きつい。サイコロは高専で作らないのかよ。」
と、競技公開と同じような衝撃事実がたくさん出てくる。
7月
ここにきてopenCVなるものを使ってみようと提案。
しかーしここに来て問題が・・・
その問題は
・普段活動している学校のパソコンにopenCVが仕様上インストールできない
・openCVどころかvisual stidioすらいつも使っていないのに無理!!
・今から勉強して使えるのか
とまぁなんだか根本的にOUTな問題が・・・・ね。
ですが環境自体はなんとかUSBから読み込むってことでどうにか回避して
残りはまぁやるしかないだろってことで勉強をはじめる。
8月・9月
ここにきて大体画像をいじったりすることは
普通にできるようになる。
しかし、どうやって個数を数えたらいいのかわからずじまい・・・・
こんなんでいいのかと言いながらも夏休みに入り開発は凍結。。。。。
10月
もうあと数日でプロコンだということで
めちゃくちゃ焦り始める。
ここにきて部長がなんとサイコロの目を検出して数をかぞえる的な
アルゴリズムをかなりのスピードで書き始める。やぁびっくりww。
僕はと言うと、サイコロ画像認識をさせるプログラムにまっしぐらで、
サイコロの画像と、それ以外のオブジェクトの画像を集めては作り、
やり直しと、なかなかにうまくいかなくて、暗礁に乗り上げるどころか、
暗礁に沈んじゃってましたwww
プログラミングコンテスト前日
結局のところ
部長のサイコロの目からの検出+謎の式からのアプローチ
サブとして、目視+サイコロ画像認識
的な感じでしかいけないなと。
当日
予行練習をしてみる。
まず
・オブジェクトってあんな大きいのがしかも真ん中にドカンと置くのか
・サイコロ不自然じゃないか
・テーブルの上の影が異常なほどで2値化に影響
と、運営はやってくれましたよ。ええ今年も。
てなことで、対応するために2値化の仕様変更、謎の式アプローチの強化
目視のウエートをちょっと重くした。
1回戦
なかなかAフィールドの数値は良かったんだけども、
Oフィールドの数値が全然だめで
敗退してしまいます。
ここでの敗因は中のサイコロの数がかなりずれていたので
謎の式からでてくる小の数が200個を超えていたにもかかわらず、
それを解答としてしまったこと。
要するに画像からうまく検出しきれなかったという話。
初日の夜
まず、部長はサイコロの目の検出がもっと正確にできないと駄目だということで
デスマを開始。
僕はというと
まず初日の試合の公式解答をデータ化。そこから
謎の式を用いた組み合わせ表示をより正確なものに。
ここでは敗者復活仕様として50以上200以下のサイコロのときの組み合わせから
色々処理をしてかなりの精度まで引き上げ。
かーらーの
オブジェクト排除をより強化して、影の影響もそこまで出ないようにして
サイコロ検出器も強化を図る。
ちなみに目視をしていた方はお早めに寝ています。
敗者復活戦
1回戦はやだなーと思いつつ競技場へ
競技をしてみると
4位で敗退。
敗因はやはりAフィールドでの大の数がよくとれなかったこと。
まわりは人力なのかそうでないのかは知らいけど
うちはあくまでプログラムを使って競技したかった。
目視は補助でそれ以上でも以下でもない。
優勝は宇部高専さんでしたね。
去年も久留米の解答を見て真似るという離れ業をしていたので
ある意味納得です。
でも今回のプロコンは運営が
甘すぎたと思います。
せめて6月のQ&Aで人力を禁止するか。
当日の競技で鏡面や、人力では処理しきれない数千単位の個数など
もっとプログラミングコンテストになるための工夫をする必要があったと思う。
だからといってうちの部が勝てるかと言われたら微妙ですがwwww
きっと他高専さんならプログラミングでももっといい戦いができたはず。
なんともいえない競技部門でしたがいい勉強になってよかったです。
2012年10月15日月曜日
プロコン行ってきました!
10月13,14日に福岡県大牟田市の大牟田文化会館でプロコンが行われました.
電算機部からは競技部門に3人出場しました.
結果は予行演習1位,1回戦4位,敗者復活戦4位でした.
まぁ,今回はうん,あれです.もういろいろありすぎて.
結論からして,
人間>>>>>超えられない壁>>>>>機械
ということが証明されちゃいました.
決勝に出たチーム全部が人力で数えていて,プログラミングしてたのがバカみたいでしたね.
来年は北海道の旭川らしいので参加する人はがんばってください.
電算機部からは競技部門に3人出場しました.
結果は予行演習1位,1回戦4位,敗者復活戦4位でした.
まぁ,今回はうん,あれです.もういろいろありすぎて.
結論からして,
人間>>>>>超えられない壁>>>>>機械
ということが証明されちゃいました.
決勝に出たチーム全部が人力で数えていて,プログラミングしてたのがバカみたいでしたね.
来年は北海道の旭川らしいので参加する人はがんばってください.
2012年9月1日土曜日
文発行ってきました!
第37回 関東信越地区文化発表会が小山高専が主管校のもと小山市立文化センターで開催されました.
電算機部からは自分を含め6人が参加してきました.
文発班が4月から作ってきた作品を無事に展示することができ本当に良かったです.
文発班の方,本当にお疲れ様でした!
電算機部からは自分を含め6人が参加してきました.
文発班が4月から作ってきた作品を無事に展示することができ本当に良かったです.
文発班の方,本当にお疲れ様でした!
2012年7月10日火曜日
みんな暑そうだなー
どうも初めまして。かつおでございます。
今回僕の作成したちょっとシュールな時計プログラムを
紹介したいと思います。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(void)
{
/* 数字&記号用アスキーアートを作成 */
char num0[5][7]={"000000",
"00 00",
"00 00",
"00 00",
"000000" };
char num1[5][7]={" 111 ",
" 11 ",
" 11 ",
" 11 ",
"111111" };
char num2[5][7]={"222222",
" 22",
"222222",
"22 ",
"222222" };
char num3[5][7]={"333333",
" 33",
"333333",
" 33",
"333333" };
char num4[5][7]={"44 ",
"44 4 ",
"44 4 ",
"444444",
" 4 " };
char num5[5][7]={"555555",
"55 ",
"555555",
" 55",
"555555" };
char num6[5][7]={"666666",
"66 ",
"666666",
"66 66",
"666666" };
char num7[5][7]={"777777",
"77 77",
" 77",
" 77",
" 77" };
char num8[5][7]={"888888",
"88 88",
"888888",
"88 88",
"888888" };
char num9[5][7]={"999999",
"99 99",
"999999",
" 99",
"999999" };
char num_colon[5][7] =
{" ** ",
" ** ",
" ",
" ** ",
" ** " };
char num_slash[5][7] =
{" **",
" ** ",
" ** ",
" ** ",
"** " };
int i; /* ループカウンタ */
char *nump[12]; /* 各アスキーアート数字へのポインタ */
time_t t; /*時間を一時的に保存*/
struct tm *ltime; /* tm構造体へのポインタ */
int year; /* 西暦 */
int mon; /* 月 */
int mday; /* 日 */
int hour; /* 時 */
int min; /* 分 */
int sec; /* 秒 */
int oldsec=0; /* 一回前の秒数 */
/* 各アスキーアートの先頭アドレスをポインタ配列に格納 */
nump[0] = num0[0];
nump[1] = num1[0];
nump[2] = num2[0];
nump[3] = num3[0];
nump[4] = num4[0];
nump[5] = num5[0];
nump[6] = num6[0];
nump[7] = num7[0];
nump[8] = num8[0];
nump[9] = num9[0];
nump[10] = num_colon[0];
nump[11] = num_slash[0];
while(1){
while(sec == oldsec){
t = time(NULL);
ltime = localtime(&t); /* localtime()でstruct *tm型に変換 */
sec = ltime->tm_sec;
}
system("cls"); /*スクリーンクリア*/
year = ltime->tm_year;
mon = ltime->tm_mon + 1; /* tm_monは 0~11 */
mday = ltime->tm_mday;
hour = ltime->tm_hour;
min = ltime->tm_min;
oldsec = sec;
/* 西暦(下2桁)、月、日 を表示 */
printf("\n");
for(i=0;i<=4;i++){
printf("%s %s ",nump[year / 10 % 10]+ i*7, nump[year % 10]+ i*7);
printf("%s ",nump[11]+ i*7);
printf("%s %s ", nump[mon / 10]+ i*7, nump[mon % 10]+ i*7);
printf("%s ",nump[11]+ i*7);
printf("%s %s ", nump[mday / 10]+ i*7, nump[mday % 10]+ i*7);
printf("\n");
}
printf("\n");
/* 時、分、秒 を表示 */
for(i=0;i<=4;i++){
printf("%s %s ", nump[hour / 10]+ i*7, nump[hour % 10]+ i*7);
printf("%s ",nump[10]+ i*7);
printf("%s %s ", nump[min / 10]+ i*7, nump[min % 10]+ i*7);
printf("%s ",nump[10]+ i*7);
printf("%s %s ", nump[sec / 10]+ i*7, nump[sec % 10]+ i*7);
printf("\n");
}
}
return 0;
}
今回僕の作成したちょっとシュールな時計プログラムを
紹介したいと思います。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(void)
{
/* 数字&記号用アスキーアートを作成 */
char num0[5][7]={"000000",
"00 00",
"00 00",
"00 00",
"000000" };
char num1[5][7]={" 111 ",
" 11 ",
" 11 ",
" 11 ",
"111111" };
char num2[5][7]={"222222",
" 22",
"222222",
"22 ",
"222222" };
char num3[5][7]={"333333",
" 33",
"333333",
" 33",
"333333" };
char num4[5][7]={"44 ",
"44 4 ",
"44 4 ",
"444444",
" 4 " };
char num5[5][7]={"555555",
"55 ",
"555555",
" 55",
"555555" };
char num6[5][7]={"666666",
"66 ",
"666666",
"66 66",
"666666" };
char num7[5][7]={"777777",
"77 77",
" 77",
" 77",
" 77" };
char num8[5][7]={"888888",
"88 88",
"888888",
"88 88",
"888888" };
char num9[5][7]={"999999",
"99 99",
"999999",
" 99",
"999999" };
char num_colon[5][7] =
{" ** ",
" ** ",
" ",
" ** ",
" ** " };
char num_slash[5][7] =
{" **",
" ** ",
" ** ",
" ** ",
"** " };
int i; /* ループカウンタ */
char *nump[12]; /* 各アスキーアート数字へのポインタ */
time_t t; /*時間を一時的に保存*/
struct tm *ltime; /* tm構造体へのポインタ */
int year; /* 西暦 */
int mon; /* 月 */
int mday; /* 日 */
int hour; /* 時 */
int min; /* 分 */
int sec; /* 秒 */
int oldsec=0; /* 一回前の秒数 */
/* 各アスキーアートの先頭アドレスをポインタ配列に格納 */
nump[0] = num0[0];
nump[1] = num1[0];
nump[2] = num2[0];
nump[3] = num3[0];
nump[4] = num4[0];
nump[5] = num5[0];
nump[6] = num6[0];
nump[7] = num7[0];
nump[8] = num8[0];
nump[9] = num9[0];
nump[10] = num_colon[0];
nump[11] = num_slash[0];
while(1){
while(sec == oldsec){
t = time(NULL);
ltime = localtime(&t); /* localtime()でstruct *tm型に変換 */
sec = ltime->tm_sec;
}
system("cls"); /*スクリーンクリア*/
year = ltime->tm_year;
mon = ltime->tm_mon + 1; /* tm_monは 0~11 */
mday = ltime->tm_mday;
hour = ltime->tm_hour;
min = ltime->tm_min;
oldsec = sec;
/* 西暦(下2桁)、月、日 を表示 */
printf("\n");
for(i=0;i<=4;i++){
printf("%s %s ",nump[year / 10 % 10]+ i*7, nump[year % 10]+ i*7);
printf("%s ",nump[11]+ i*7);
printf("%s %s ", nump[mon / 10]+ i*7, nump[mon % 10]+ i*7);
printf("%s ",nump[11]+ i*7);
printf("%s %s ", nump[mday / 10]+ i*7, nump[mday % 10]+ i*7);
printf("\n");
}
printf("\n");
/* 時、分、秒 を表示 */
for(i=0;i<=4;i++){
printf("%s %s ", nump[hour / 10]+ i*7, nump[hour % 10]+ i*7);
printf("%s ",nump[10]+ i*7);
printf("%s %s ", nump[min / 10]+ i*7, nump[min % 10]+ i*7);
printf("%s ",nump[10]+ i*7);
printf("%s %s ", nump[sec / 10]+ i*7, nump[sec % 10]+ i*7);
printf("\n");
}
}
return 0;
}
このコードを実行すると何とも言えないシュールな時計が出来上がります。。。
登録:
投稿 (Atom)