2019:
最新

blog/2006-06-30

ICPC国内予選

ICPCの国内予選がありました.
私とkskとgotoの3人で参加しました.チーム名はkstm.orgです.

問題Aはkskが解くと初めから決めていたので,開始直後から取り組んでもらう.
その間に,他の問題ですぐ解けそうな物を探すと,問題Bが簡単そうだったので,問題Bの解き方を軽く考える.
問題Aよりも問題Bの方が早く解けそうなのでkskと変わってもらい,問題Bを解く.
小さなミスはあったけれど,問題Bはすぐに解き終わったのでAccept,OK..
再びkskが問題Aを解き始める.こちらも少ししたら完成.一発でテストにも通過.
gotoには途中から問題Dの解き方を考えてもらっていたので,コードを書き始めてもらう.
しばらくたっても出来上がらなかったので,見せてもらったら,色々と怪しい点があったので,直しにかかるが終わらない.
2問で終わると予選突破は絶望的なので,問題Dは後にして,私が問題Eを解く事にする.
短いコードですんだので,すぐ書き終わる.実行するとたまに怪しい動作をする.
結局2つ位つまらないミスをしていたので,それを直してAccept.OK.ちょっと時間がかかってしまった.
この時点で順位は30位くらい.同じ大学から3チーム以上出れない事を考えれば,大丈夫そうだが微妙.

kskが問題Fを急いで解くか,gotoにDを0から書いてもらうのどっちが確実か考えながら
結局gotoを鍛える為に,gotoが問題Dを解く事にする.
私とkskは初めCとFを考えていたが,途中からXPプログラミングに変更.
怪しい所がたくさんあったので,kskと直す直す直す・・・・時間切れ.結局3問(時間遅い)でした.

最終順位は35位.目標には届きませんでしたが,みんなにとって良い経験にはなったと思います.
予選通過チームの発表はまだなので,通過したかどうかは分かりません.

それぞれの問題は

  • 問題A 簡単
  • 問題B 超簡単
  • 問題C 枝狩できる自信が無い
  • 問題D 普通
  • 問題E 簡単
  • 問題F だるそう
    な感じでした.ここから見れます.(消えるかもしれませんが^^;)

おまけ
4番目の練習問題.「上か下か」では,入力が秘密の数より大きいか小さいかを探します.
秘密の数を探すヒントは与えられないので,がんばるしかないのですが,過去の例を参考にすると数字が分かります^^
一つ目のデータでの秘密の数が「5963」で,二つ目が「2005」.データ毎に秘密の数が違います^^;
これでは,データ1とデータ2を同じプログラムで連続正解する事は出来ない.一度は間違えろという問題のようです^^;
一応,データ3とデータ4は同じプログラムでも正解を出せるようになっていますが(笑

  • 秘密の数の一覧
    Data1 :5963 (ごくろうさん)
    Data2 :2005
    Data3 :3001 〜 9999
    Data4 :10 〜


blog/2006-06-27

CIntでArray

Haskellで配列が使いたくなったので,Data.Arrayを使ってみる.
諸事情で,ArrayのindexにはCIntを使いたかったのですが,CIntはIxクラスのインスタンスじゃないようです.
仕方がないので,自分でIxクラスのインスタンス宣言を書く事に.

rangeとinRangeの宣言を書いたら,warningが出なくなったので安心していたら,実行時にエラーも吐かずに止まります.
indexの宣言も書いたらうまくいきました.自動導出でうまくいかなかったのでしょうか? よく分かりません.
・Haskell/小ネタ

instance Ix CInt where
    range (m,n) = [m..n]
    inRange (m,n) i = m <= i && i <= n
    index b@(m,n) i
        | inRange b i   =  fromIntegral (i - m)
        | otherwise     =  error \"Ix.index: Index out of range.\"

やってた事
Telnetでライフゲーム
Telnetでワールドカップに触発されました^^;


blog/2006-06-26

縦コン

今日は情報工学科の縦コン
例年に比べ参加者がとても少なかった事を除けば(大きな差?)例年通り
ソフトボール大会 => 食堂で飲む => 研究室で飲む
の流れ.
自分の研究室以外もぐるぐる回りながら飲んだり食べたりしていました.
私は12時ごろには帰りましたが,まだまだ終わらなさそうな雰囲気でした.
何時まで飲んでたんだろう...


blog/2006-06-23

ワールドカップ

録画できるテレビを持っていないので,ワールドカップの日本・ブラジル戦は徹夜で観ました.眠い.
所で,telnetでワールドカップのライブを配信しているサイトがあるそうです.ここ
ttyrecを使えば録画もできるはず.寝不足防止に役に立つかも??


blog/2006-06-21

ルービックキューブ

昨日の晩に近くの本屋で買ったルービックキューブで遊んだ.
難しいです... 朝から晩までやって,だいぶ雰囲気はつかめましたが
出来た! と思ったら,二つのブロックの位置が逆だったり^^;
2000円分以上に楽しめそうです.


blog/2006-06-19

飛行機

ラジコン飛行機と言うと,値が張るイメージがありますが
- エアロソアラ
- エアロウィングス
かなり手ごろな値段で買えるみたいです.Amazonギフト券があるので買ってみよう(書籍以外にも使えるのかな...?).


blog/2006-06-16

ICPC登録とかanalogのまともな日本語化

kstm.orgの友達を誘ってICPCに出る事にした.
解答中は自分の脳の中の情報と紙の情報以外にアクセス禁止(Webとか過去に書いたプログラムとか)らしい.
最近は,HaskellばかりでC++っぽいプログラムを書いてないので,このままでは危険です.
algorithm.hとか便利なライブラリ周辺もあまり覚えてません^^; 本を大量に持ち込むか,しばらくC++に戻らないと危ないです.

私は,サーバのアクセス解析にanalogを使っているのですが,デフォルトの状態では
日本語の「検索語句レポート」や「検索語レポート」がURLエンコードされているせいで,あまり使い物になりません.
そこで,しばらく前まではanalogのソースに手を入れて「URLデコード=>文字コードをEUCに統一」とやっていました.
ところが,先日最新のanalogをコンパイルしなおした際に,すっかりその事を忘れていて元に戻ってしまいました.
また作り直すのもめんどくさいので,postanalogを使おうと思ったのですが,エンコードの結果がかなり怪しかったので使えません

結局,ゼミが終わってから自分で書く事にしました.今回はanalogのソースに手を入れていないので
バージョンが少々あがっても大丈夫なはずです.
紹介ページ


blog/2006-06-15

Haskell版ウェブサーバ

Haskell版ウェブサーバを公開した.
Parsec,かなり便利です.


blog/2006-06-13

kstm.org飲み会

kstm.orgの皆で夜の10時からグライダー場で飲み会.
帰ったのは朝の5時.次の日は普通に遅刻しました...
kskが家の鍵と自転車の鍵を失くしたらしいけど,見つかったのだろうか?


blog/2006-06-08

びしょぬれ

kstm.orgに新しく入った2年生は,C/C++, Java, perl, 辺りが使えるらしい.
なかなか優秀そうで楽しみ.
とりあえず,みんなで何か作ってみる事になったらしい.

その後,みんなで18番ラーメンに行ったけれど,何故か閉まっていた.
仕方がないので,他のラーメン屋で超大盛りを頼んだけれど,18番用に構えていたお腹にはちょっと足りない(汗
ラーメンを食べ終わって外に出てみると,雨が降っていた・・・ 私,バイクなんですけど....

びしょびしょになったり,エンジンが吹けなくなったりと,散々な状態で帰ってから
Sang0の家で,新入生の為のCS講座.・・・kstm.orgは「ものつくり同好団」です.


blog/2006-06-07

財布を忘れて

情報工の縦コンは毎年ソフトボールの後に飲み会です.
今年は初めてソフトボールに参加する事になったので,練習.

すごく疲れたのでジュースを飲もうと思ったら・・・ 財布を忘れてました.
K上君にお金を借りて,ジュースを買った.

昼,通帳は持っていたのでそれでお金を下ろそうと思ったら,ATMではカードが必要だそうです.

K上君への借金:1110円


blog/2006-06-06

SMVメモ

朝,「普通のHaskellプログラミング」が届いた.
全体的には入門者向けの内容ですが
最後はwikiのパーサを書くらしい.
研究の関係上,パーサは書けた方が楽しそうなのでここだけでも面白そう.
と言うか最近,parsecとかHaXMLを触っているので丁度良い.
今日は真ん中まで読んでやめ

舞萩,レッドサピナはどんどん成長してます.
ディフェンバキアも暖かくなってきたので,調子がいいみたい.
ただ,ハバネロだけは芽を出しません(汗
芽が出るまで1,2週間らしいのでまだ待てますが^^;

kstm.orgに新入生が入るようです.情報工の2年生.どんな人だろう.
情報工2年と言う事しか分からないので,どんな人か想像できない.
私が2年の頃の今頃は・・・MARIE作ってたなぁ...

さて,今週は色々忙しいっぽいのでそろそろ週末のゼミ発表の為に何かしないと...
と言う事で家に帰ってしばらくしてからSMVでALUとその周辺の設計.

出力のピンの値を決定する為にDEFINEとASSIGNが使えれて
何と無く違いも理解してたつもりだったけれど,気になったので確認してみる.
とりあえず,ASSIGNは同期の取れた変化を,DEFINEは非同期(リアルタイム)に値が変化するイメージ
で間違っていないみたい.

そこで気になったので,下のようなコードを書いてみる

MODULE main
VAR
  fuu: Fuu(bar.out);
  bar: Bar(fuu.out);
SPEC
  AF fuu.out =2 --嘘

MODULE Fuu(in0)
DEFINE
  out := in0+1 mod 2;

MODULE Bar(in0)
DEFINE
  out :=in0+1 mod 2;

こんなの書いたら,振動しちゃうのでSMV的(ステップ)な動作ができないような・・・.
結果

file test.smv: line 4: recursively defined: fuu.out
in definition of bar.out at line 14
in definition of fuu.out at line 10

再帰的な定義を許可しない事で,振動を回避しているようです.