【どう書く?org】数独の問題数を数え上げる

よく見る数独は3×3×3だけど、2×2×2のサイズの大きさで、解ける問題ははいくつあるか数えるという設問。
こういうパズルの解法ロジックに関わるようなものを作るのは初めてかも。頭の中でアナログに解法を考えて、それを抽象化しながらコードにしていくというプロセスが思いのほかおもしろい。
とりあえず何時間かかけて、解く方のプログラムはできたぽい。ぽいというのは問題を公開しているサイトの問題を入れてみたら解けて、自分で適当な数字を入れて解かせてみたら、おかしな結果にならず解けない問題は解けないということが経験的に何となく確からしいかなという話。
解法のロジックができたら後は早いかと思っていたけど、甘かった。解ける問題を数え上げる方法は、適当に総当たりでしらみつぶしにしていこうかと思ったけど、場合の数が多すぎ。
予めある数字がnこある場合、16Cn×4n通り。天文学的数字の予感。n=3の場合で既に215,040通り。これは無理だ。
何とかして問題を絞るか、あるいはやり方を変えて、完成図の方から空白を入れていく方法にするとかかなあ。むずい。なかなか投稿者が出ないだけある。

MacvsWindows.com

いつ頃だったか、itmedia.co.jpかどこかで「もうみんなマックつかえばいいと思う」なんてな記事があった。要はブートキャンプでWindows使えるようになったので、Macのほうが選択肢が広いということだ。
おいらの場合、Mac OSにも慣れておこうくらいのつもりでMacにして、かれこれ1年とちょっと。最初のうちはMac用のドライバってどうやってインストールすんの?デバイスマネージャみたいなのはないの?という感じだったが、何となく慣れて、本日に至る。
Windowsだと使っていくに従って、すこしずつWindowsというOSの機能について知識が増えていったように思うのだけど、Mac OSにはそれがないように思う。何となく使うことができて、困らない。わからないこともきっとあるだろうけど、まあ何とかなりそう、みたいな。
かつてWindowsのコントロールパネルはしばしば使っていたと思うんだけど、Mac OSのそれに相当する「システム環境設定」というものは、もう何週間も実行すらしてない。という気がする。
ということをMacvsWindows.comを読みながら思った。英語だけどOSの挙動の違いをいい感じにまとめていておもしろい。
ちなみにMac OSの最悪な点は、ウィンドウのエンティティがDockのアイコンと一致してない点だと思う。他にもリサイズハンドルが右下にしかないとかあるけど、一番はそれ。ExposéとかDockのなかったバージョン9までは一体どうやってウィンドウを切り替えていたのか謎。

【本】13階段(高野和明著;講談社;2001)

人間誰しも我が身がかわいい。それが行き過ぎて他人を殺してしまう人もいる。この話は、人が人を殺すという状況に、不幸にもとらわれてしまった何組かの親と子のつながりのお話。
弟が薦めてきた本。一気に読めるエンターテイメントとのことなので、夏頃からだらだら読んでいてちょっと飽き気味の村上春樹の「世界の終わりと(略)」は、とりあえず脇において、図書館で借りてきた。
2001年と、ちょっと前の本で、江戸川乱歩賞受賞、反町隆史主演で映画化もされている。知らないと言ったら弟にモグリ呼ばわりされたので、その頃かなり話題になっていたのかも知れない。
というわけで、一気読みしてしまった。
傷害致死で2年服役して仮出獄した青年が、刑務官に誘われて、とある死刑囚の冤罪を晴らすため、10年前の事件について二人だけの捜査をしていくという筋書きになっている。謎解きあり、刑事行政の内側の話あり、確かにエンターテイメントだ。
その分、特に終盤は怪しい人が目まぐるしく入れ替わり、主人公の隠していた苦悩とかジレンマが、そっちのけのまま話が進んでいってる気もする。中盤なんかは、刑務官の経歴が語られて、刑罰についての自分なりの理想と、それに反する現実の間に苦しむ様子が描かれて、まさに話の渦中にいるという感じがするんだけどね。
先日初めての裁判員候補者への通知が行われたとのこと。この小説にあるように、刑罰を決めるのも、執行するのも人間。結局人間が人間を殺すということにいささかの間違いはない。判決に文句を言いつつも本音では結局はお上に任せておきたい多くの人たちが、この死刑を含む刑罰に向き合うことになる。
きっとこの話の中で語られているようなことを感じることになるんだろうなあと思う。仕事で辞退できるかーとか、そんな話題にしかなっていない気がするけど、乾いた日本人には、きっと人間について発見することがあるのではなかろうか。それは悪いことではないと思う。

【どう書く?org】島の数をカウントする

どう書く?orgの問題に初挑戦。お題は「島の数をカウントする」。1時間少しくらいかかった。最初問題をちゃんと読まずに島の総数を数えていた。

おいらと同じJavaで書いた人が現時点でひとりいて、既にカウントした島の判断方法とか、データの持ち方とかが違うけど、再帰的アルゴリズム使っていて、まあ基本的な流れは同じぽい。
実は1年くらい前、マインスイーパを作ってて、そのときに同じようなコードを書いた。ゲームの中で任意の区画をクリックして、そこに爆弾がなかったら、周辺を調べて同じように爆弾のない区画を全部表示しないといけない。
で、再帰アルゴリズムでひとつひとつ周辺を調べていく方法を用いたんだけど、これが数百×数百みたいな広大なフィールドでやると、スタックが足りなくなってランタイムエラーになったんだよね。
99×99の区画に99個の地雷を置いたフィールド。
スタックオーバーフローして地雷原が途中までしか開いてないの図。
ということで、再帰じゃない方法で書かれてないかなーと見てみたけど、知らん言語が多くてよくわからん。でも大体みんな再帰してるぽいね。なんとなくだけど。

自動車保険契約を更新

自動車保険の更新があった。

なんと昨年と同等プランで27,390円も安くなっている。どういう仕掛けだ? ノンフリート等級が8→9になっただけとは思えないのだけど。携帯電話みたいに継続利用で割引になってるのか?
というわけで3年間車にのっていて初めて保険契約を継続した。対人対物無制限、車両保険限定A付きで5万ちょっと。
確か1年目の時は某ネット系のとこで、結構な手厚い補償にして12万くらい。あの頃は、話を聞いた他の人の保険料に比べて、なぜ自分のは高いのか不思議だったけど、まあ色々あって徐々に安くなってくるものなのだと思った。

【習作】FloatingBalls

思い立つところがあって、久々に日曜プログラミング。最初は、Windowsのスクリーンセーバーのラインアートを作ってたのだけど、いつの間にか線じゃなくて円になった。実質的に変わらないけど。
作り始める前にあんまり考えていなかった問題として、線なり円なり、塗りつぶす色をどうやって決めているのかということ。少しずつ色が変わっていくのをどうやって得るか。
Windowsのラインアートでどうやっているのかはわからないけど、3次元の立方体の箱の中で、直線運動をしていて壁に当たったら跳ね返るような点の座標(x,y,z)をそのままRGBにしたらそれっぽいのになるのでないかと思い至った。
そんでよく考えたら円の座標も2次元というだけで同じことなので、n次元のハコの中で動き続ける点の座標を供給するためのFloatingPointなるクラス作ってみた。そういう仕組みってきっと既にあるのだろうけど、何か呼び方があるのだろうか。
座標用(2次元)と色用(3次元)の2つのFloatingPointを持つFloatingBallなるクラスを作って、とりあえず100個画面に出してみた。(上の図)
問題点:まれにRGBのビット深度が255越えてColorのコンストラクタでエラー発生することがある模様(だめじゃん)。浮動小数点の誤差??(調べる気なし)

エクスペリエンスインデックス上がってた

Parallels 4.0にしたらVistaのエクスペリエンスインデックスがちょっと上がってた。

プロセッサ 3.7→3.7
メモリ 2.9→2.9
グラフィックス 1.0→1.9
ゲーム用グラフィックス 1.0→1.0
プライマリハードディスク 5.9→5.9

なお、2つか3つくらい前のMac mini(Core Duo 1.83GHzでメモリ2GBでOS X 10.4)+Parallels 4.0

Parallels Desktop for Mac 4.0きたー

全体的にデザインが洗練された感じ。

↓設定の画面も見やすくなってイイ!
で、メジャーバージョンアップなので当然だけど、機能がいろいろ追加されている。
ゲストの画面を表示する方法が、普通のウィンドウとかコヒーレンスとかあったんだけど、新しくModality View Modeというオプションが加わった。これは縮小して表示する。この小さい画面でもマウスやキーボードで操作できる。

あと、Windows用のウイルス対策ソフト「Parallels Internet Security」とやらがインストールできる。
OEM元はカスペルスキーというロシアの会社らしい。

コヒーレンスにしたとき、WindowsのタスクトレイとMacのメニューバーを統合することも可能。なんだか、そんなに混ぜてしまっていいのかと少々心配になる。

SmartMount … USBのストレージなどをMacとゲストOS同時に使えるようになった。今までは確かにParallels立ち上げたらMacからは見えなくなってたね。まあ確かに便利だ。
他にも、音声認識で操作とか、iPhoneからゲストOS操作とか、Macのサーバー用OSもサポートしたりとか、使ってみたくはあるけど、使うことはないだろうなあという機能も。
VMがマルチコアや64bit演算に対応したり(このへん実はよくわかってない)、メモリ沢山積めるようになったり、DirectXのサポートが厚くなったりと、足元も着実に進歩している様子。
インストールするとき、IntelのCPU(1.6GHz以上)じゃなかったらインストールしないでね、みたいなメッセージがあって、Ver3→Ver4でパフォーマンス悪化してるのではないかと危惧していたけど、とりあえず今までと同様に使えそう。
個人的に嬉しかったのが、日本語キーボードの「半角/全角」ボタンが使えるようになったことかな。

DSiブラウザーで青空文庫を見てみた

この3連休はDSiで遊んでばかりで何もしなかったよ。今日はミンパクが入場料無料とか聞いたので行ってみたかったのだけど。

で、DSiブラウザーで青空文庫を見てみたけど、まあ十分読めるっぽい。HTML表示するのに2つの方法があって、そのうち「タテ長表示」にしたのが上の写真。通常表示だと↓こんな感じ。
折角2画面あるのだから、縦書きで見開き表示できる青空文庫のブラウザ作ってみたくなる。そうは言ってもDSi用の開発環境があるのかどうか不明。
Webアプリで作る手もあるけど、縦書き見開きで表示させようとなると、フォント回転させないといけない。考えたあげく画像にして出力するしかなさげ。まあ大人しくDSiブラウザーで読むのがいいかな。
ちなみにDSiブラウザーのHTTPヘッダ情報はこんな感じ。

HTTP_USER_AGENT Opera/9.50 (Nintendo DSi; Opera/446; U; ja)
HTTP_ACCEPT text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
HTTP_ACCEPT_LANGUAGE JA,en;q=0.9
HTTP_ACCEPT_ENCODING deflate, gzip, x-gzip, identity, *;q=0
HTTP_ACCEPT_CHARSET iso-8859-1, utf-8, utf-16, *;q=0.1

クラブニンテンドー入会

諸事情によりNintendoDSiを買った。現在クラブニンテンドーに入会中…。

Wikipediaでは、「任天堂側にはCS(顧客満足度)向上の他、従来のアンケート葉書よりも顧客の購入傾向などが容易に把握できるため、特定ユーザーへのアンケート調査などの高精度の市場調査が可能になるというメリットがある。」なんつって書いてあって、入会する前はふーんそうかい、くらいに思ってたのだよ。
で、実際入会してみようとすると色々名前から住所から色々聞かれるわけね。そんで驚いたのだけど、確かに、よくある同封のハガキに名前住所書くよりも心理的障壁がない気がする。不思議なことに。
これは僕らみたいに若い頃からインターネットに親しんでいた世代に特有なのか、全世代に言えることなのかわからないけど、個人情報はおろか、なぜDSiを買ったかとか、買うにあたって誰が決定権持ってたとか、そんなことまでほいほい入力してしまった。
ひとつはポイントだろう。住所とか入力するときに、ポイントたまったらプレゼントあげるから〜とか言われたら何となく入力してしまう。あとは、任天堂のブランドもあるだろう。小さい頃からよく知っている会社だし、消費者としても、経営的にも、よくいい話を聞く。うーん。任天堂ってすげえなあと思った次第。
ポイントなんて実際金銭的価値に換算しようと思ってもまあ、ほとんど価値がないと思うんだけど、(クラブニンテンドーで実際やってるんだけど)買ったソフトの感想を教えてくれたらポイント上げるよーなんて言われたら何となくOKボタン押してしまうばかりか、ちょっと本気になって色々感想書いてしまってみたりして。
ちなみにクラブニンテンドーの会員規約の最後に例によって書いてある管轄は、京都地裁だった。