プログラミング言語処理の課題1がやっと理解できました。授業中の先生のヒント(というかほぼ答え)に助けられました。授業は大事ですね。
課題は加減算と剰余算、括弧を作成しなさいとなっていましたが、調子に乗って単項プラス/マイナス演算子も定義したらうまく動いたので、このまま出そうと思います。
去年、学園祭にてシリアルナンバー制を導入しました。これは何が何個売れたかはっきり残る分、集計がちょっとした手間でした。集計とか検索は人間には不向きでコンピュータにやらせれば楽です。
集計だけってのもなんだし、その他必要そうな機能、レジ、商品の追加、変更と値引き機能、集計機能があれば便利だろう。じゃあ試しに作ってみるか、と作り始め、現在、半分くらい実装が完了しました。…といっても、頼まれたわけでもなけりゃ、必要があるわけでもない。自分が勝手に作ってるだけなんで、学園祭で使うこともないだろうね。何やってるんだろうね、勉強しろよ。
FF XI Official Benchを実行してみました。我が家のGeForce2 MX 400君のスコアは1800でした。ま、この程度でしょうか。ところが同じ構成の友人のPCは2000オーバーだったりして。こちらがWin2kで友人はWinXPなのが原因かなあ。でもXP嫌いだから替えたくないな。
嫌いな原因は見た目…って書くと、2000風に戻せば?と言われます。ところが完全に同じにならない(違うシェルなので当然ですが)から嫌なのですよ。個人的には95のインターフェイスがシンプルで一番なんですがね…。さすがに古臭いか?
寝坊して作業に遅れて行ったら既に終わっていて、これから行くという買出しについて行きました。ハナマサにて小麦粉、砂糖、マーガリン等を購入し、パウンドケーキの材料が揃いました。
夕方から土浦花火大会に向かいました。自転車で行ったおかげで渋滞は回避できましたが、場所がなく結局R6の脇道に座り込んで見ました。この大会は新作と乱打がはっきり分かれてて、打つ数は多いけど、間が悪いね。途中、隣にいたジョーにデカい花火の破片が命中し、レンズがずれてました。メガネがなかったらヤバかったよなあ、なんて言いながら続きを見てました。
つくばに帰って一太郎でお好み焼きを食って、小磯邸でふぐ卵とオクラをいただきました。「コンピュータの話をすると引かれる」みたいなことを言ったら、「コンピュータってわかる人が半端に多いから、他の人もわかるに違いないと思い込んでる。」と、寺下さんがおっしゃってました(もっと続きがあるんですが)。ごもっとも。他人の趣味や知識なんてわからない。そうか気づかなかった。
園芸の喫茶班で使うPOPを作りに山下邸へ。女性陣がPOPを、我々は造花を作っていました。結構頑張ったつもりですが、三浦さんがうますぎて完敗。
技短視覚部の学園祭、春日祭に行ってみました。残念ながら既に終了していて、パンフレットと学内見学だけとなりました。今までよそ者お断りの祭りかと思っていたのですが全くそんなことはなく、普通の学園祭でした。ちょっと宣伝が足りないだけですね。来年は逃さず行ってみようと思います。
以降、ジョー邸でゲーム鑑賞。
今日は家でずっと寝てました。体育が休講だったはずなのですがどうだったかなあ。以下は2日連続のゲームねたです。
自分はヌルゲーマーなもので浅く広く楽しんでいます。今のゲームは綺麗ですが複雑で難しいです。CPUも強く適当にやっても勝てません。ゲームは気晴らしより苦労し達成感を得る物に寄ったように見えます。昔からガンガンやっている人向けなのでしょうか。
これらを子供たちは楽しんでいるのでしょうか。今の小学生はゲームをしているのか?とは友人の塚田氏の言葉ですが、自分もそう思います。目を血走らせてクリアまで一直線じゃ、仕事のようであまり面白くないと思うのですが…。
友人から一日に寝る適正時間は6時間で、多すぎても少なすぎても頭がちゃんと働かないという話を聞きました。確かに、寝すぎると一日がボンヤリして終わってしまいますねェ。また、どこかで聞いた話では、深夜の0〜2時の睡眠はホルモンの関係だかで大切らしい。
その時間より前に寝るとすると、11時寝、5時起きが理想の就寝…かぁ?いくらなんでも早いんじゃないか。
主専攻実験の後半「mini-FTPの作成」が始まりました。今回は元になるサンプルがないので、イチから作ります。開発はC++言語に決定。一層のスキルアップを図ります。
通信できないと何もできないので、まずはTCPソケットクラスの作成です。送受信をsend(), recv()か、read(), write()にするかで悩んでいます。どっちでもできると思うけど、なぜか迷う。
そこそこの規模になるとエラー処理が大事です。エラー処理は昔作った例外用のクラスを使いまわすことにしました。クラスは(きちんと作れば)独立した物のように扱えるのがイイですね。
植物の説明と、OB会名簿の印刷後、土屋さんに植物班の売上管理方法について半ば強引に提案してみたところ、簡易POSシステムを見てもらえることになりました。でも実はまだできていないので、ベクトル解析のレポートを終了させた後、急ピッチで作成。とりあえずできたー。
学園祭前日。植物を運び、椅子、机を並べるなどし、明日に備えます。二年生が頑張っているお陰であまりバタバタしないで済みますね。感心です。
そうそう簡易POSを明日、仮運用してみようという事になりました。未だにタブの切り替えでハングアップする大問題があるのですが、デバッガで追ってもuser32.dllの中に入っていて良くわからない。デフォルトメッセージ処理でぶっ飛んでるのかなー…?逐次テンポラリファイルに記録をするようにし、一応の安定性は保ちますが、対処療法は好きじゃないよー。でも原因わかんねー。
夕方から喫茶班で販売するパウンドケーキを焼きました。紅茶ケーキがパリッと仕上がっていたのに対し、バナナケーキは妙にフカフカになってかなり崩れていました。バナナの入れすぎかね。おいしいからイイか。
学園祭1日目。天候は曇、喫茶、植物ともに売れ行きは好調です。
POSシステムは時刻の保存を書き忘れていて、序盤の販売履歴の時刻が不明になりました。
学園祭2日目。曇り時々雨がちらつきシケた天気です。昨日より人通りが少ないのは明らかで、喫茶、植物ともに低迷していました。
今日も引き続きPOSシステムを運用しました。自分が見ている分には不都合はなかったように思います。
OB会ではミチタロウが飛ばしてました。OBの方々に就職の相談をしたら、気にしすぎと言われました。
学園祭3日目。いきなり雨が降り始め、午後には豪雨となりました。客足は雨宿りが居たため見かけ上は増えていました。売上はどうなんだろう。とりあえず植物が完売してよかった。
せっかく見に行ったダイノジが満員で、入り口が学実委に封鎖され見られませんでした。定員がどうのこうの言っていたが、消防法上の問題だろうか。
今日はハングアップした上、記録の書き戻しをミスって履歴が3〜4個消える。補填して計算だけは合わせました。
軽い打ち上げをスタミナ太郎で行いましたが、さみしいことに功労者の2年生女子が誰も来ません。ちかふみさんが食欲なさそうでした(※次の日ダウンしてました)。
16時半頃、震度3の地震がありました。昔、小地震が頻発すれば大地震用のエネルギーが散って安心だと思っていました。M4(ショボ地震)2回 = M8(大地震) と思っていたんですねえ。今となっては笑い話ですが。
ミーティングの直前に塚田氏から宇都宮にいるから行けないというメールがきました。急いでいて超そっけない返事をしてしまい、後でシマッター!と思ったが既に遅かった。
ミーティングの後、定例の食事に行こうと思い、いつもは来ない人々を色々誘ったのですが、つれない返事ばかりでつまんなくなったので一人で帰りました。感じ悪いですね、自分。山下さんは暖かく見守っていて偉いと思いました。自分はだめです。
山下さんが手伝いをした学会で弁当が大量に余ったと聞き、塚田氏と共にもらいに行きました。なんでも、前日足りなかったから次の日は倍注文したせいらしいです。注文した人は余ったら捨てるつもりだったんでしょうか?もったいない。
ジョーにそろそろヴァイオの音を直してくれと言われ、もらった弁当をおみやげに向かいました。といっても、わかってることはSiSチップというだけ、適当にSiS 630/730系のサウンドチップ(SiS 7018)のドライバを入れてみたら音が出ました。ノイズも乗ってないし、これで正解でしょう。
ついでにWinampの日本語表示だとかMSN Messenger、Winny2のインストールなどもしました。存分にネットを満喫してくださいましー。
園芸の畑で焼き芋をしました。途中で雨が降るわ、通報されたのか管理事務所のおやじが来るわで、ギリギリでした。あまり焼けていなかったのか甘くなかったです。
家に帰って焚き火の煙くささを落とそうと、風呂に入ろうとしたらガスが停まってました。ガスメーターを見ると地震か衝撃で止まったと出てる。地震って15日だっけ?16、17と一度もガスを使わなかった…わけないですね。でもガスメーターぶん殴った覚えもないんですがね。
松宮さんのマツタケを食す会@山下邸に参加しました。マツタケにおぞましいほど虫が付く事にショックを受けつつ。。秋刀魚とお吸い物、炊き込み御飯を食べました。おいしかったです。
ベクトル解析が全然できなくて悲しい。塚田氏は龍ヶ崎のサイゼで粘ると言っていましたが、俺は粘っても無理っぽいので寝ました。
プログラミング言語処理のテストは何を見ても良いですが、隣の人の回答は見ないで下さいという先生の言葉により、難なく解けました。講義資料をちゃんと印刷してて良かった。
午前を寝過ごしました。ああ゛ー。
午後の実験もうまくいかない。ネットワーク関連のシステムコールはぐちゃぐちゃしすぎててよくわかりません。とりあえず動けばいいんですが、それも叶わずじまいで困りました。どうしたものか…。
目次: ベンチマーク
Nクイーン(※)を解かせるプログラムを組んでみました。結果は15クイーン(解2279184通り)で2分14秒 でした(コンパイラ: Visual C++ 6.0 release build)。Athlon 1.4GHzのくせにこんなです。うーん、遅い。
ネット上で見つけた、高橋謙一郎さんという方が作ったプログラムは15クイーンが1秒12でした。いやはや速すぎます。高橋さんのページを読むに、ユニーク解を用いると無駄な検索を省けるようですが、よくわからなかったので組み込めそうにありません。悲しい限りです。
追記です。15クイーンは左右対称性を利用して検索を半分カットし、動的配列の使用を止め、静的配列にしたところ21秒になりました。これだけで7倍も速くなるんですねえ。でもまだ2ケタ秒かかっていて遅い事に変わりはないです。
(※)Nクイーン問題はn x nの大きさのチェスの盤にn個のクイーンを互いに取られない位置に置くパターンがいくつあるかを求める問題のこと。
大西洋単独横断で英雄となったリンドバーグ(Charles Augustus Lindbergh 1902-1974アメリカ)の「The Spirit of St.Louis」の邦題「翼よ、あれがパリの灯だ」がカッコイイなーと思いました。意訳しすぎと思う方もいるかな、私は訳者のセンスが感じられて良いなーと思ってます。少なくとももろにカタカナ英語にするよりは良いでしょ。
園芸リッチ飲み&小磯氏誕生会。参加条件の3000円相当の貴腐ワインを抱えてジョー邸へ。ピザやポテトなどをほおばりつつ、高い酒を飲みました。カベルネ・ソーヴィニオンがあったのですが自分には辛口で合いませんでした。
ジョーは明日、お祖父さんのお葬式があるから打ち上げに出られないそうな。寝過ごすとまずいので朝まで起きていてくれーってことで全員で起き続けていたら、もう途中からハイになってましたね。その勢いでくだらないものを大いに情熱を注ぎ込んで作り上げました。なぜあんなに頑張れたんだろう(笑
学園祭の打ち上げを天久保のミラノというお店で行いました。参加予定が15人でドタキャンを考えて13人と予約したら17人来たようですが、気にせず席に全員詰めて座りました。個人的には狭いと人が近くて話しやすいと思いました。暑いけどねー。
店のオヤジさんには料理が13人分しかないと聞いた我々が奪い合うようにして食べているように見えたらしく料理をオマケしてくれました。が、最後にはお持ち帰りになるほど増えてました。やりすぎ。
二次会も小磯邸に20人で押しかけた結果、ミラノと大して変わらない圧迫感です。昨日作った園芸バトロワの図を回し読み、そこそこ好評(?)でした。どの人も他のメンバーに対する(偏った)イメージがあるようです。
目次: ベンチマーク
引き続きNクイーン問題を考えてみる。高橋さんのページを見て、一意解がやっとわかりました。試しに組み込んでみたところ、効率無視の実装にも関わらず15クイーンが10秒で解けました。初めの130秒(2分14秒)からすると実に10倍以上になりました。アルゴリズムって大事ですね。
園芸トップページ2度目の修正案をアゲてみた。1度目の修正は元ファイルを生かして修正したものの、WinXP&IE6.0 SP1で崩れているとのこと。
再び元ファイルから修正し直そうと思ったのですが、変な作りの元ファイルを生かすからおかしくなるのであって、一から作ればいいんですね。気づくの遅。てことで…消去!
目次: ベンチマーク
しつこくNクイーン問題を考えてみる。調べてもこれ以上高速なアルゴリズムが見つからなかったので、Cの卑怯技ビット演算による並列化を用いた高速化を図りました。結果は思いのほか上々で、15クイーンが5.8秒で解けました。なんと、一気に2倍ですか。
この問題は並列処理しやすいので多数のPCに振り分けて解くこともできるでしょう。手が空いたら簡単な通信プログラムを付けて、手持ちのPC 2台で分散処理しようと思います。
N-queens solver Type 5 solver: バックトラック, 左右対称性, 静的配列, 一意性, ビット並列演算 n: answer unique time -------------------------------------------------- 2: 0 0 0 ms 3: 0 0 0 ms 4: 2 1 0 ms 5: 10 2 0 ms 6: 4 1 0 ms 7: 40 6 0 ms 8: 92 12 0 ms 9: 352 46 0 ms 10: 724 92 0 ms 11: 2680 341 10 ms 12: 14200 1787 20 ms 13: 73712 9233 150 ms 14: 365596 45752 901 ms 15: 2279184 285053 5788 ms 16: 14772512 1846955 39287 ms 何かキーを押すと終了します...
広報会議が長引いたので、園芸のミーティングに遅れていったら既に終わっていました。ちょうどバーミヤンに行くところだったようなので、そのままついていきました。
珍しく1年>3年という人数比になり、図情からのニューカマー工藤さんも来てくれました。食後、図情の寮を皆で見に行ってひとしきり羨ましがってから解散しました。帰り道、寒さが身に染みた。そろそろ厚着をしなければ。
主専攻実験のFTPがいくら作っても全然終わらないと最近気づき、あせって進めています。今日も家からリモートで作業していたのですが、ACCSnetがプチプチ切れてくれるので作業になりません。4時間で2回も落ちて作業にならないので、ソフトウェア工学に着手しました。任意の年月日の曜日を求めよ、という問題です。既知の日付からの差分で出すようにしました。
我が家のPCのカレンダーは2099年までで、ドラえもんの誕生日(2112年9月3日)は載っていませんが、今回作ったやつによれば金曜日(ほんとは土曜日。2003年10月31日を参照の事)だとわかります。ちなみに今後109年間、曜日が連続していれば…の話ですからね。
曜日の話ですが計算間違いをしていました。プログラムを作り直して再計算させたところ、ドラえもんの誕生日(2112年9月3日)は金曜日じゃなくて土曜日でした。calコマンドとも一致したので、こちらが正しいと思われます。お騒がせして申し訳ないです。
今日は午後の実験からずっとFTPの作成です。クラスの設計を見誤ったか、段々とガタが来始めているような気がします。ここまで来て作り直しは嫌だぞー(;´д`)