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位.目標には届きませんでしたが,みんなにとって良い経験にはなったと思います.
予選通過チームの発表はまだなので,通過したかどうかは分かりません.
それぞれの問題は
おまけ
4番目の練習問題.「上か下か」では,入力が秘密の数より大きいか小さいかを探します.
秘密の数を探すヒントは与えられないので,がんばるしかないのですが,過去の例を参考にすると数字が分かります^^
一つ目のデータでの秘密の数が「5963」で,二つ目が「2005」.データ毎に秘密の数が違います^^;
これでは,データ1とデータ2を同じプログラムで連続正解する事は出来ない.一度は間違えろという問題のようです^^;
一応,データ3とデータ4は同じプログラムでも正解を出せるようになっていますが(笑
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でワールドカップに触発されました^^;
今日は情報工学科の縦コン
例年に比べ参加者がとても少なかった事を除けば(大きな差?)例年通り
ソフトボール大会 => 食堂で飲む => 研究室で飲む
の流れ.
自分の研究室以外もぐるぐる回りながら飲んだり食べたりしていました.
私は12時ごろには帰りましたが,まだまだ終わらなさそうな雰囲気でした.
何時まで飲んでたんだろう...
録画できるテレビを持っていないので,ワールドカップの日本・ブラジル戦は徹夜で観ました.眠い.
所で,telnetでワールドカップのライブを配信しているサイトがあるそうです.ここ
ttyrecを使えば録画もできるはず.寝不足防止に役に立つかも??
昨日の晩に近くの本屋で買ったルービックキューブで遊んだ.
難しいです... 朝から晩までやって,だいぶ雰囲気はつかめましたが
出来た! と思ったら,二つのブロックの位置が逆だったり^^;
2000円分以上に楽しめそうです.
ラジコン飛行機と言うと,値が張るイメージがありますが
- エアロソアラ
- エアロウィングス
かなり手ごろな値段で買えるみたいです.Amazonギフト券があるので買ってみよう(書籍以外にも使えるのかな...?).
kstm.orgの友達を誘ってICPCに出る事にした.
解答中は自分の脳の中の情報と紙の情報以外にアクセス禁止(Webとか過去に書いたプログラムとか)らしい.
最近は,HaskellばかりでC++っぽいプログラムを書いてないので,このままでは危険です.
algorithm.hとか便利なライブラリ周辺もあまり覚えてません^^; 本を大量に持ち込むか,しばらくC++に戻らないと危ないです.
私は,サーバのアクセス解析にanalogを使っているのですが,デフォルトの状態では
日本語の「検索語句レポート」や「検索語レポート」がURLエンコードされているせいで,あまり使い物になりません.
そこで,しばらく前まではanalogのソースに手を入れて「URLデコード=>文字コードをEUCに統一」とやっていました.
ところが,先日最新のanalogをコンパイルしなおした際に,すっかりその事を忘れていて元に戻ってしまいました.
また作り直すのもめんどくさいので,postanalogを使おうと思ったのですが,エンコードの結果がかなり怪しかったので使えません
結局,ゼミが終わってから自分で書く事にしました.今回はanalogのソースに手を入れていないので
バージョンが少々あがっても大丈夫なはずです.
紹介ページ
Haskell版ウェブサーバを公開した.
Parsec,かなり便利です.
kstm.orgの皆で夜の10時からグライダー場で飲み会.
帰ったのは朝の5時.次の日は普通に遅刻しました...
kskが家の鍵と自転車の鍵を失くしたらしいけど,見つかったのだろうか?
kstm.orgに新しく入った2年生は,C/C++, Java, perl, 辺りが使えるらしい.
なかなか優秀そうで楽しみ.
とりあえず,みんなで何か作ってみる事になったらしい.
その後,みんなで18番ラーメンに行ったけれど,何故か閉まっていた.
仕方がないので,他のラーメン屋で超大盛りを頼んだけれど,18番用に構えていたお腹にはちょっと足りない(汗
ラーメンを食べ終わって外に出てみると,雨が降っていた・・・ 私,バイクなんですけど....
びしょびしょになったり,エンジンが吹けなくなったりと,散々な状態で帰ってから
Sang0の家で,新入生の為のCS講座.・・・kstm.orgは「ものつくり同好団」です.
情報工の縦コンは毎年ソフトボールの後に飲み会です.
今年は初めてソフトボールに参加する事になったので,練習.
すごく疲れたのでジュースを飲もうと思ったら・・・ 財布を忘れてました.
K上君にお金を借りて,ジュースを買った.
昼,通帳は持っていたのでそれでお金を下ろそうと思ったら,ATMではカードが必要だそうです.
K上君への借金:1110円
朝,「普通の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
再帰的な定義を許可しない事で,振動を回避しているようです.