2012年06月

Pythonの数独ソルバをRubyに移植して気づいたこと

あらゆる数独パズルを解く」で紹介されているPythonの数独ソルバをRubyに移植してみた。移植したのは骨格の部分だけだが、解のある問題であれば解けるはずだ。

もともとは、頭の体操がてら自力で実装を始めた。だが、結局探索することになるなら誰が書いてもほとんど変わらない内容になるだろうと思い、他の人のコードを見てみることにした。

もっと簡潔に書けるし、そもそもグローバル変数を使いすぎだとも思うが、元のコードの意図をなるべく尊重してわざとそのままにしてある。

移植するだけでも様々な気づきがあった。

  • リスト内包表記の簡潔さ
  • Hash生成のイディオム: Hash[keys.zip(vals)]
  • 浅いコピーの罠: values[s] = values[s].delete(d) を values[s].delete!(d) と書いてしばらく悩んだ

解のない問題や複数解のある問題を考慮すると、SQLで数独を解くのが適当なのかもしれない。刈り込みによる高速化も面白そうだ。

応用情報技術者試験に合格した

落ちたら恥ずかしいので黙っていたのだが、4月15日に応用情報技術者試験をこっそり受けた。本日合格者が発表され、僕も無事に合格していた。

合格者の平均年齢は29歳だから、39歳の僕が受かっても偉くともなんともないのだが、「今年は取れそうな資格を手当たりしだい取ろうと思っている」との宣言を有言実行したことにはなる。いつも口ばかりの僕にとっては快挙と言っていい。

記録によれば、受験勉強を始めたのは2月5日だった。勉強期間が長すぎ、中だるみしてしまった感はあるが、覚えたことをいったん忘れ、また覚え直したことが良い結果につながったのかもしれない。

午前問題の対策にはWindowsアプリの「応用情報技術者試験対策」をおもに使った。誤答がなくなるまで繰り返し解き、これでだいぶ自信がついた。

午後問題の対策には『平成24年度【春期】 応用情報技術者 パーフェクトラーニング過去問題集』を使った。一度通して解いただけなので自信こそつかなかったが、問題のレベルや形式が把握でき、やらないよりはましだった。

せっかく高度情報処理技術者試験の一部試験免除資格が得られたので、秋期の情報処理技術者試験も何か受けるつもりだ。合格報告がなければ、きっと落ちたのだと思ってください。

記事検索
Twitter