2009-08 << 2009-09 >> 2009-10

2009-09-30 (水)

雨が降っていて眠い.

*納期

明日には開発中のシステムが動いている予定なので,最後の詰め.

…うそです.詰めは動いてからやります.

社内でも有数の規模のシステムな気がするので構造を把握し続けるのが大変.

27時過ぎまで会社にいた.それでも,まだ残っている人が結構いたなぁ.

初めて深夜なんとか申請をした.申請しておけば残業代が出るらしい.

2009-09-29 (火)

朝から,iアプリのAPI調べたり.動画をインラインで再生できる端末って無い?アプリからストリーミング再生できる機種も限られているみたいだし.ドコモ動画ってどうやってやってるんだろう?

気づいたら大分時間がたってたので出社.

*tmux

なんか,流行ってますね.

screenの方が素直に日本語表示してくれるのと,ここ数日screenのソース追いかけたりしたばかりなので,しばらくはscreenになりそうですが.

*忙しい

たぶん,忙しい.明日で区切りがつくかなぁ.週末には,席替えが控えているし.

*株価

入社する前に株を買っておけばよかった.

*明日は

仕事が忙しいので,早めに会社に行こう.なるべく.きっと14時前に行くはず.雨降ってなくて眠くなければ….

2009-09-28 (月)

H.264周りを調べる.リファレンス見てみたけど,やっぱりややこしい.どこかに分りやすい解説無いかなぁ.gotoあたりに聞くか.

*amazonの「なか見!検索」

「なか見!検索」ができなくなってる.はやく復旧してほしい.

ついでなので,いつも思っていることを書いておくことに.

「なか見!検索」やGoogle Booksで,初めの何章かだけ見れる本が結構あることに疑問を感じます.小説とかならそれで良いと思いますが,実用書って初めの章は一般的なことしか書いて無くて,その本の価値を判断する情報としてはあまり役に立たないんじゃないでしょうか.

本を買う時って,知りたいことが的確に書かれているかで判断すると思います.どんなに説明が分かりやすい本でも必要としている情報が無ければ買わないし,1ページでもそれがあれば買います.

一番読んで欲しい章こそ立ち読みできるようにするべきだと思います.ネットだと難しいと思いますが,図表やコードの断片にモザイクかけるとかが効果的かもしれません.「ここに自分が必要としていることが書いてある」と分かるように見せることが重要です.

追記.Googleブックスは,単純に最初のページというわけではなさそう.ただ,ページ数が多い本だと途中がごっそり抜けてたりするなぁ.検索はできるのでデータ自体はあるみたいだけど.

2009-09-27 (日)

*「もしものとき」に備えて

最近の反省を踏まえて,携帯電話から一通りの作業が出来るように環境を整える.

携帯電話といっても,iPhoneやAndroidとかではなくて,私は普通のケータイ使ってます.iPhoneはAppleにお布施しないとソフトを開発できないのが嫌だし,Androidはもう少し様子見という感じ.

0927.png

今までは,HTTP経由でコマンドを実行できるCGIを設置していたけど,設置していたサーバでは最近何もしていないので別の場所に.

さらに,コマンドの実行結果を返すだけだと対話的なコマンドとかが実行できないので作り直す.

i-modeからsshするためのゲートウェイとアプリを数年前から考えていたのだけど,面倒なので普段使っているscreenをCGIから操作することにしました.

基本的なこと

今回はapacheの権限でCGIを動かすので,screenを操作するためにsuidする.suidperlとか入ってないので,C++で書く.

とてもセキュリティ的に危険なので認証とかにバグが混入しないように.

screenのhardcopyはUTF-8が文字化けする

現在の画面はhardcopyコマンドで保存とか昨日書いたけど,実は文字化けしてダメ.ちゃんと設定すれば大丈夫だろうと思っていたのですが,encodingとかc1とか色々やってもダメでした.

logを使う

logにはコントロールコードを含めて全てが記録されます.

最終的には端末をエミュレートするアプリを作る予定ですが,まずはテキストベースということでエスケープシーケンスとかが邪魔です.凝ったインターフェイスのソフトとか使っていると大変.

とりあえず,現在の一画面だけログに出力する.

screen -X eval "msgminwait 0" "logfile flush 0" "width -w 80" "logfile test.log" "log on"
screen -X eval "log on" redisplay
screen -X log off

「redisplay」だけだと上手くいかないことがあるので「width -w 80」とかして強制的に更新.

ペーストバッファを使って保存

今回は,画面全体をペーストバッファにコピーして保存しました.

screen -X eval "readreg t" "msgminwait 0" "copy" 
 "stuff \"H L$ \"" "writebuf screen.txt" "paste t ."

こんな感じで,一旦 t にペーストバッファを退避して,全体をコピー&保存して,ペーストバッファを元にもどします.

コピーモードだとダメなのが痛い.

あとは

色々やると,メッセージ周りで嵌りやすい.メッセージ表示中はコマンド受け付けてくれなかったり,書き込んでも画面が更新されなかったりする.

detachされているscreenに書き込むとscreenが落ちてしまうので,screenの中からlocalhostにsshで入ってattachしておく.

*screenの調子が

昨日からscreen自体の調子が悪い.なぜだろう.ウインドウを切り替えようとすると固まることが多いし,一度そうなると,アタッチにも時間がかかる.

2009-09-26 (土)

twitterは140文字じゃなくて140バイトにしたら良かったと思う.もちろんUTF-8.

掃除して,秋葉原に行く.

irssiからweechatに乗り換えようかな.必要な機能が最初からそろっていそう.

*

久しぶりに通帳に記帳した.

そういえば,インターネットの料金がどの口座から引き落とされているのか謎.引き落とされているのを見た覚えが無い.あれ?

*ttyの無い環境からscreenをコントロール

ttyが無いとscreenにアタッチできなくて困ることがある.

ttyが無いけどコマンドが実行できるならば,

screen -S screenname -X stuff string

とすれば良い.

さらに,

screen -S screenname -X hardcopy

で,現在の画面を取得.

アカウントもコマンドの実効権限もあるけど色々な事情でttyを取得できなかったりでアタッチできないという場合の最終手段.

そんな状況に陥ることは少ないと思うけど,suidされたバイナリから実行できることを考えると…ごにょごにょ.

2009-09-25 (金)

いまやっているプロジェクトが心配.月末にはβ版みたいなのが完成する予定なのだけど.

*gccのインラインアセンブラ

http://d.hatena.ne.jp/wocota/20090628/1246188338

初めて,gcc -masm=intel とかやってみた.あとはアセンブラをダブルクォートで文字列にしなければいけないのおどうにかして欲しい.VC++の方が良いなぁ.

* ところで上記のサイト,よく見る

別のサイトかと思ってたら違った.

2009-09-24 (木)

いつの間にか5連休が終わっている.

連休が終わっていたので会社に行った.

ビールをもらってきた.カレーに続いて,またしても奇抜な色.

2009-09-23 (水)

*ドコモの携帯電話の利用料金や通信量を認証なしで確認する方法

http://d.hatena.ne.jp/softether/20090914#p1

これは便利.

ただ,NULLGWDOCOMOでuidをとっているのが気になる.他人のuidを直に書くとどうなるんだろうか.

*デジタル放送

個人で使えるデジタル放送機器は無いのかなぁ,と思っていたのだけどあった.

http://www.village-island.com/

手軽に特定の建物内限定のワンセグ放送とかできると面白そう.

2009-09-20 (日)

秋葉原.

最近は,UVC(USB Video Class)対応のWebカメラも増えてますね.ひとつ買っておく.UVCはVideo for Windowsには未対応なのか.もうDirectShowを使えということですか.

2009-09-18 (金)

なんだか,会社で使う銀行の支店が統一されるとかで講座を作る.めんどい.

2009-09-17 (木)

メモ:明日は印鑑を持っていく

2009-09-16 (水)

今日は一日中,自分が書いたコードを弄り回していた.今月中に動くことになっているので,やっつけな感じの実装をそろそろどうにかしないといけない.

会議中にホワイトボードに文字を書くという仕事をやらされた.殆どひらがなです.酷い….

2009-09-15 (火)

起きたら14時だった.13時間くらい寝た.

熱も下がってたので出社.なぜか首が痛い.

あまりに重役出勤すぎたのか,心配された.

2009-09-14 (月)

やっぱり今日も調子が悪い.とりあえず会社には行こう.

昨日,体調が悪い中,秋葉原に行ってジャンクのLCDを買った.よく見ると,タッチパネル付きで解像度もそこそこ高そう.これで300円は安いなと思ったのですが.

買ったSHARPのLCDの仕様を調べてみたけど,入力信号が標準的なものじゃなかった.コントローラICが載った基板もあるのだけど,データシートが見つからない.

というか,SHARPのサイトってデータシートがどこにあるのか分からない.もしかして基本的に非公開ですか?

バックライト用のインバータ回路とかタッチパネル用のA/Dコンバータを買ったと思えば良い買い物.

*風邪

38℃.薬飲んで寝る.

2009-09-13 (日)

とても体調が悪い.code jam手を付けてみたけどだめだった.

風邪で動けなかったけど,目が覚めたらちょうど始まっていたので,やることに.体調を考えると,問題を全部読むのが無理そうなので,とりあえずAとCを解くことに.

Aは簡単.ただ文字が一種類しか出てこない場合を考慮するのを忘れてて一回失敗.

Cは簡単だけど,問題が大きい.

とりあえず,small用とlarge用を平行して作る.C-largeは少し速くしようと直前で手を入れたとこがばぐってた.結果のdiffをとるまでも無くCase #1から違う.

寝よう.

2009-09-12 (土)

せっかくの休みなのに体調が良くない

2009-09-11 (金)

*インターンの人の発表

なんか,表に出しても大丈夫そうな雰囲気だったので書く.

インターンで来てた人たちが作った,Androidで動く某動画サイト用クライアントの発表を見ました.

少人数,短期間で作った割には良く出来てました.iPhoneのような大人の事情的な問題も少ないし,技術的には難しくないようです.色々直せば公開できるものになりそうですが,その色々直さなければいけないのと,運用コストの面で難しいらしい.

そのあと,打ち上げにもさりげなく行ったりしました.ご馳走様でした.

最近忙しいのに,さりげなく本来の仕事以外のことをしている時間が多くてそろそろまずそうなので仕事しましょう.します……たぶん.

どうも,このサイトが捕捉されているようなので,変なことは書けない.

2009-09-10 (木)

そろそろ日記以外を更新するべきでしょうか?

*財布の中身とか

なんだか,重たい気がしたので,中身を整理する.

レシートとか,期限の切れた割引券とかの他にも,予想外のものが色々出てきた.

  • 図書カードが3万円分(あのときとか,あのときにもらったやつか)
  • 同じ病院の診察券が2枚(無くして作ってもらったのだけど実は財布の中に)
  • 長野の某食べ放題店のソフトドリンク無料券がたくさん(いつのだ…?)
  • ドナーカード(懐かしい)
  • 大学の加工センターの講習の修了証
  • 献血手帳(今って確かカードですよね?)
  • 3.3V低ドロップダウン三端子レギュレータ(数ヶ月前に買った)

大学の加工センターを使うためには修了証が必要なのだけど,これってまだ使えるのかな?期限とか書いてないんですが.利用料がかかるけど,タダで使える魔法の呪文が頭に浮かぶのは気のせい.

修了証の制度ができたばかりのときに作ったので No. は 199.

*ポケモン

私は微妙なところでポケモン世代ではないのでポケモンの話題にはついていけません.まぁ,ポケモン世代だったとしても,きっと変わらないのですが.

実際に少しやってみたりしたことはあるのですが,大きな謎があるゲームだと思いました.

  • そもそもポケモンは何なのか?食用になるのか?
  • なぜモンスターボールは都合よくポケモンだけを取り込むのか?
  • オオキド博士は何者か?

これらの謎を,色々な人と話し合いましたが,結論はまだ出ていません.しかし,真実に限りなく近いところまで到達できたのでは無いかと考えています.

ここまで到達するために,考え始めてから3年の年月が経過しました.

ポケモンは何なのか?

最初に考えた可能性は,遺伝子操作によって生み出された娯楽用の動物だという可能性です.やたら危険っぽい攻撃をしてくるのに,人間の命を奪わないように出来ています.

では,食用になるのでしょうか?

もちろん,この場合,食べれると考えられます.ただ,ゲームを少しやっただけでは,ポケモンを食べるというイベントに遭遇できなかったため確証はありません.やはり,高度に遺伝子を操作された動物を食べることに抵抗があったのかもしれません.

モンスターボールについて

モンスターボールも謎の存在です.なぜ都合よくポケモンだけを取り込めるのか.そもそも,色々な物理法則を無視しています.とても高度な技術で,一見,物理法則を無視しているかのような振る舞いをしている可能性はもちろんあります.

しかし,モンスターボールがそんな凄いテクノロジーによっているとするには,他の道具や技術が,それほど現代の私たちの世界と違うようには見えません.アンバランスです.

では,こう考えましょう.この世界の物理法則は私たちの世界とは違うのだと.

全く別の世界ならば,何が起こっても不思議はありません.しかしそれではつまらないのと,舞台が地球環境に酷似しています.主人公も人間としか考えられません.

以上のことから導き出される一番自然な答えは,人類が作ったバーチャルな世界であるということです.

つまり,先ほどのポケモン遺伝子操作説は間違いだということになります.残念ですが.

モンスターボールがポケモンだけを取り込むのは,そのようにプロテクトがかけられているからでしょう.何でも入れられたら,窃盗や誘拐に使われて,モンスターボールの所持が違法化されてしまいます.

バーチャルな世界ですが,ポケモンやモンスターボールを除けば自然や町並みはとても普通です.木も山も川も,全く物理法則が違う世界のものには見えません.

やはり,モンスターボールの技術やポケモンは,バーチャルな世界を作ったときに混入したバグのようなものを,意図的に突いて,故意に誰かが作ったとしか思えません.さらに,古代のポケモンの話なども出てくることから,歴史まで改竄されているようです.

それを誰がやったかを,次に明らかにします.

オーキド博士は何者か?

この世界には,ロケット団とか,色々いたような気がしますが,真の黒幕はオーキド博士に違いない.

ポケモンで夢を与えているように見せかけ,それを利用してこの世界を牛耳ろうとしています.そう考えれば,辻褄が合います.

そろそろ書くのに飽きてきました.

結論

っと,こんな想像をしていたのですが,Wikipediaとかで調べたら全然違った.

*H-IIB

帰ってすぐ寝てしまった.

25:57に目が覚めた.H-IIBの打ち上げですね.

あわててjaxaとニコニコ生放送を開く.ニコニコの方は混雑で見れず.

打ち上げまで1分.ギリギリ.映像では打ち上げ70秒前.

jaxaのストリーミングは結構遅延がありますね.

打ち上げ成功です.良かった.

2009-09-09 (水)

なんだか最近,寝てから4~5時間くらいで目が覚める.で,もう一度寝るのだけど,やっぱり4~5時間後に目が覚めてしまう.

そして,起きたら14時.

*日本語入力

組み込み用の省メモリの日本語入力ソフトってないかなぁ.携帯電話向けとかで省メモリをうたっているものでも数十KBのRAMを消費する.そんなメモリをたくさんつかうものじゃなくて,スタックを含めてRAM消費が256バイトに収まるとかそういうの.辞書は大きくても良い.うまいこと機能的な辞書を作れれば,それなりの変換ができる気がするのですが,どこかにないかなぁ.

*新幹線のアレ

中央リネンサプライというところがクリーニングしているようです.

新幹線の座席の布(?)がどこで洗濯されているのか気になって調べていたら発見.まさか,使い捨てじゃないだろうと思ったけど,ちゃんと再利用されているようで安心した.

ただ,最近たまに見るポケモンとかが印刷されたものは,どこが作っていて,使用後にどうなっているのかまでは分からなかった.

2009-09-08 (火)

今日は昨日より早く起きたのだけど,なぜか会社に着いたら14時.

*面談

なんだか,人事の人と面談する予定が入っていたのに気付いてあわてて会議室へ.とりあえず向かったのは良いけど,知らない会議室で場所が分からなかった.

たまたま通りかかった同期の人に聞いて,受付で聞いて,そこにちょうど面談の担当者が現れて解決.ここって採用の面接受けた場所ですね.

最近,やっと社内の配置が分かってきました.

何か問題が無いかしきりに聞かれる.

仕事

「仕事自体は楽しいのだけど,時間をたくさんとられるのが問題かも」

まぁ,仕方無い問題.他の人はもっと忙しかったりするみたいだし….他の人の様子まで聞かれたので主観に基づいて話しておく.

睡眠時間10時間と趣味の時間を8時間くらいは確保できるのが理想.

人間関係

「問題が出るほどの人間関係を作る力が無いのと,問題があってもたぶん気付かないことが問題です」

誰か友達になってあげてください.

オフィスの環境

「快適です」

13Fにも仮眠室が欲しいとか普段思ってるのに,忘れていた.眠いときにわざわざ下の階まで移動するより,その場で寝るほうがマシです.

他にも,言っても良いものか迷うことまで言ってしまったけど,問題は無いと受け止められたみたい.

*夕食

仕事中にお腹が減ったのでマクドナルドに行く.もう,これを夕食にして良いかと思って,ハンバーガーを3つ食べた.

食べてる途中で,冷蔵庫の中のうどんを思い出した.

2009-09-07 (月)

*坦々麺食

100円で坦々麺食べれるらしいので,社内で配られていたビラをもって出かける.東京駅近くの中華料理屋なのですが,入り口から高級そうな店で困った.でも中に案内されたら,同じ会社の人がたくさんいて安心.

普通においしかった.

*FOMAと通信したい

昨日の夜,FOMAの資料をいろいろ読んでいたけど,もしかしてFOMAって外部からキー操作できない?FOMA用のキーボードアダプタ作ろうと思ってたのに.普通にUARTが使える感じだったので目を通していたのですが,対応表見たらN系の一部の機種だけだった.その代り,使っているSH905iでは,IrDAでのObex通信がサポートされているな….ただ,IrDAからObexまでのレイヤを全部実装するのはつらいなぁ.

movaのほとんどの機種でできたことが,FOMAでできないなんて.

*音楽

私のことを知っている人なら分かると思うけど,私は音楽に類するものを殆ど聴きません.

別に音楽が嫌いなわけでも,良いと思う曲が無いわけでもない.でも聞かないのは,音楽を聴いていると,頭が上手く働かなくなるからです.音楽って,文字とは違って,思考より下のレイヤに強制的に割り込んでくるのでどうしても考えていることを上手く把握できなくなる.

しかも何も聴いていないときも無意識のうちに頭の中で流れていたりするから始末が悪い.

そもそも聴くのが面倒くさいというのが大きいのかもしれませんが.

*工作用のLCD探し

仕事の合間に見つけたのでメモ.

本当はタッチパネル付きのが欲しいのだけど,

VRAM内蔵のがマイコンから使うには良いかな.

*あれ?

オシロスコープ.なんか箱のラベルに書いてある型番と本体に書いてある型番が違う.なんか,ちょっと良い機種なんですが….よくわからないけど,これは交換してもらった方がいいかな.面倒くさいなぁ.

2009-09-06 (日)

USBに飽きてきたし,次はイーサネットかなぁ.秋月でも行くかな.ただ,LANのモジュラージャックはあまり好きじゃない.

*オシロスコープを買ってしまった

秋月行ったらPDS5022Sが安かったのでつい買ってしまう.31000円.とても良い時代.

とりあえず電源投入.思ったより大きい.特にディスプレイが.

CIMG0001.jpg

プローブを繋いで調整した.

CIMG0006.jpg

やっとまともに電子工作ができる.

大学やバイト先では,テクトロニクスのオシロを使っていたので,ちょっと操作しにくい気がしますが,そのうち慣れるでしょう.

あと,ノイズが結構のりますね.アースをちゃんとすれば少し改善するかな?

せっかくなので,グラフィックLCDで遊ぶ.

CIMG0007.jpg

色々なところにサンプルがあって助かりました.Sim's blogさんを参考にしたらすぐ出来ました.

…偶然にも,同じ画像.こっちはちゃんと振ります.

*忘れてたけど

/software/cppfl/を更新した.入院中に少しいじったものを適用.

BitmapWindowがPenを継承したおかげで個人的に少し使いやすくなった.

*左利き用のハサミを見た

昨日買い物に行ったら,左利き用のハサミがあった.まぁ,いつもあるところにはあるのだろうけど.

ハサミを使うのは左手だけど,左利き用のハサミってとても使いにくい.いつも右利き用のハサミを左手で使うので,力の入れ方がそちらに最適化されてしまっているから.

ただ,やっぱり右利き用のハサミを左手で使うと,(たぶん)不自然な力の入れ方をしているせいで長時間使うと手が痛くなる(親指の付け根とか).

売られている左利き用のハサミというのは,右利き用のものと刃のあわせ方が逆になっている.

いつも思うのだけど,左利き用のハサミしか使ってこなかった恵まれた人で無い限り,右利き用のハサミを普通に使えるはず.ただ,手が痛くなるので,刃のあわせ方はそのままにして,指を通す穴とかを,左利きの人が長時間使っていても大丈夫な形にして欲しい.

左利き用なんだから,右利き用のものを反転すれば使えるなんて安直な商品を見るたびに似たようなことを思う.左利きの人は,巷にあふれている右利き用の道具と,左利き用の道具の両方を使うことになるという想像力が足りていない.

まぁ,最初から左右対称な道具が一番単純で良いのですが….

*カロリーゼロのコーラも見た

こういう商品を見るたびに,

飢えが死因の多数を占めている世界で日本人は何をやっているんだろう

と思う.

飢えで死んでいく人が周りにたくさんいる中で,十分なカロリーを摂取し,さらにカロリーの吸収を抑えてまで食べ物を食べるというのは,何かおかしいと感じないのかなぁ.

普通なら,非難されることな気がするけど,見なかったことにしているのか.

私とか,買い物するとき,カロリーの表示があるとつい「カロリー÷金額」がなるべく大きくなるように選んでしまうのに….

2009-09-05 (土)

なんだか,頭痛と鼻水な日.熱は無いけど,風邪かな.そして,昨日の睡眠時間が短かったせいか,とても眠い.

朝起きて,Code JamのCを解いたあと,夜まで寝る.

*Code Jam C 一応やっておく

C

やっぱり,解き方が分かればBよりも楽だなぁ.間違えてて上手くいかなかった時のことを考えてBにしたけど,実際に書いてみたら大丈夫だった.

#include <iostream>
#include <string>
using namespace std;

const char welcome[] = "welcome to code jam";
int count[sizeof(welcome)];

int main()
{
    string s;
    int N;
    cin >> N;
    getline(cin, s);

    for (int i=0;i<N;i++) {
        getline(cin, s);

        for (int j=0;j<sizeof(welcome);j++) {
            count[j] = 0;
        }

        for (int k=0;k<s.size();k++) {
            if (s[k] == welcome[0]) count[0]++;
            for (int j=1;j<sizeof(welcome)-1;j++) {
                if (s[k] == welcome[j]) {
                    count[j] = (count[j]+count[j-1])%10000;
                }
            }
        }
        printf("Case #%d: %04d\n", i+1, count[sizeof(welcome)-2]);
    }

    return 0;
}

あとで他の人のソースも見てみよう.

色々

書きながら,自分のコードを見て違和感を感じる.仕事でプログラム書いていると,コーディング規約とかそのプロジェクト全体でのコードの雰囲気みたいなものがあるけど,数十行の短いプログラムでもそういう影響があからさま出るなぁ.

2009-09-04 (金)

眠いけど,とりあえず出社.

*Google Code Jam 2009 (Qualification Round)

昨夜は眠かったので何もせずに寝てしまったのだけど,4時過ぎに目が覚めたのでGoogle Code Jamのサイトを見てみる.

やりたくなったので,とりあえず少しやってみることに.

レギュレーションをよく知らないけど,Qualification Roundは別に全部解く必要はなかった気がする.

A

Largeもそんなに大きくないし,素直に実装.一度目は「Case#」が抜けていて失敗.

大丈夫そうなので,largeもやっておく.一瞬ですね.Perlとかでも良かったかも.

ソース.使ってなかった変数とか消して多少整形しなおしてあります.

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int match(const string &d, const string &s)
{
    int p=0;
    int L = d.size();
    for (int k=0;k<L;k++) {
        char c = d[k];
        if (s[p]=='(') {
            p++;
            int f=0;
            while(s[p]!=')') {
                if (s[p++]==c) f=1;
            }
            if (f==0) return 0;
        } else if (s[p]!=c) {
            return 0;
        }
        p++;
    }
    return 1;
}

int main()
{
    int L,D,N;

    cin >> L >> D >> N;

    string s;
    vector<string> dic;

    for (int i=0;i<D;i++) {
        cin >> s;
        dic.push_back(s);
    }

    for (int i=0;i<N;i++) {
        cin >> s;
        int count = 0;
        for (int j=0;j<D;j++) {
            count += match(dic[j],s);
        }
        cout << "Case #" << i+1 << ": " << count << endl;
    }

    return 0;
}

B

BとCの問題を読んで,少しCの方が面白そうだけど気力がないのでBを.これも問題のサイズが小さい.何も考えないで良さそう.

今度は出力の後ろに余分なスペースが混入しているのに気付かずに失敗.問題文をかなりいい加減にしか読んでいなかったので,読み間違えたんだろうと思って読み直す.ここで初めて単語の意味とか調べだして,やっぱり間違ってないことを確認.コードもどう見ても間違っていないので,出力ファイルをよく見たらスペースが….まさかと思って,スペースを出さないようにして再提出.

大丈夫そうなので,largeもやる.これも一瞬で終わりますね.やっぱり速度とか気にする必要はなかった.

#include <iostream>
using namespace std;

int T,H,W;
int map[128][128];
char ans[128][128];
char cc;

void calc(int x,int y) {
    static int dx[] = {0, -1, 1, 0};
    static int dy[] = {-1,0,0,1};
    if (ans[y][x]) return;

    int min = map[y][x], dd = -1;
    for (int d=0;d<4;d++) {
        if (map[y+dy[d]][x+dx[d]] < min) {
            min = map[y+dy[d]][x+dx[d]];
            dd = d;
        }
    }

    if (dd<0) {
        ans[y][x] = cc++;
    } else {
        calc(x+dx[dd],y+dy[dd]);
        ans[y][x] = ans[y+dy[dd]][x+dx[dd]];
    }
}

int main()
{
    cin >> T;

    for (int i=0;i<T;i++) {
        cin >> H >> W;

        for (int j=0;j<=H+1;j++) {
            for (int k=0;k<=W+1;k++) {
                map[j][k] = 999999999;
                ans[j][k] = 0;
            }
        }

        for (int j=1;j<=H;j++) {
            for (int k=1;k<=W;k++) {
                cin >> map[j][k];
            }
        }

        cc = 'a';
        cout << "Case #" << i+1 << ":" <<  endl;
        for (int j=1;j<=H;j++) {
            for (int k=1;k<=W;k++) {
                calc(k,j);
                cout << ans[j][k] << ((k<W)?" ":"");
            }
            cout << endl;
        }
    }
    return 0;
}

Bに時間がかかりすぎた.Cも頭の中ではできていたので,もしかしたらBより楽だったかも.

Cもやりたかったけど,眠いので寝る.睡眠時間が2時間削られてしまったが仕方がない.

結果

朝起きたら,A,Bともに問題なく通っていた.

追記

そもそも,なんで夜中に目が覚めたのかを忘れていたけど思い出した.

WindowsUpdateのせいで,X200が勝手に再起動を始めた音で目が覚めたんだった.そして,再起動後に中ボタンのクリックができなくなっていることに気付いて,トラックポイントのドライバの再インストールをしたら,マウスカーソル自体が消えた.とりあえず,再起動したら治ったけど.

2009-09-03 (木)

PHPを使っていると,何か変なスキルが身に付きそうです.少なくとも,普段のプログラミングでは深く考えない言語仕様について考えさせられます.

*PHPのunpack

返ってくる配列の添え字が1から始まるとか正気じゃないと思う.

いままでforeachで処理してたので気付かなかったけど,途中で進めたり戻ったりする処理が必要になって初めて気づいた.

*PHPのイテレータ

仕方がないのでイテレータ使ったけど,ArrayIteratorってseekができるのに,一つ戻ったりはできないのか.というか,現在の位置が取得できないので,戻りたいときは現在位置を自分で数えておいてseekしないといけないの?keyは取れるけど,配列の要素番号が連続とは限らないし.

PHPは何かがおかしい.

2009-09-02 (水)

*とにかく時間が欲しい

時間が欲しいなぁ.

もっと仕事がしたいし,もっと趣味にも費やしたいし,もっと寝たい.

一日中,ほぼ全ての時間をやりたいことに費やしているわけだけど,やっぱり時間は全然足りない.

やっぱり不老不死とかが必要だと思う.時間がどこかで売られているなら買いたい.

もしくは,もっと頭の回転と行動を速くすればいいのだろうけど,疲れてしまうしなぁ.

*

今日は社員証を忘れたせいで少し苦労した.なるべく外に出ないようにしていたけど,出ると入れなくなるので誰かが通るのを待たなければいけない.逆に言えば,誰かが通るのを待てば誰でも出入りできるのか.

という,夢を見ました.

2009-09-01 (火)

日記を書いて気づいたけど,もう9月なのか.これは,いろいろまずい.

*PHP

trueの文字列表現は「1」なのに,falseは空の文字列なのが嫌だなぁ.

bool型の値を文字列に変換するのって,9割方デバッグ用の出力だとうので,普通にtrue,falseを文字列にしてほしい.