テストが足りないのでバグがあるかもしれない。見つけ次第、訂正する。Hall)問題とは以下のような問題のことだ。「プレイヤーは、三つのドアを見せられる。ドアの一つの後ろにはプレイヤーが獲得できる車(アタリ)があり、一方、他の二つのドアには山羊(ハズレ)が入っている。ホストであるモンティは、それぞれのドアの後ろに何があるか知っているのに対し、もちろんプレイヤーは知らない。プレイヤーはまず三つのドアの一つを選ぶ。次にモンティは他の二つのドアのうち一つを開け、山羊をみせる。モンティはプレイヤーに、初めの選択のままでよいか、もう一つの閉じているドアに変更するか、どちらかの選択権を提供する。プレイヤーは、選択を変更すべきだろうか?」(モンティ・ホール問題より一部修正)続きを読む前に、まずは自分で正解を予想して頂きたい。正解は、「ドアを変更すべき」なのだが、これに引っかかる人は多いらしい。10年ほど前にこの問題を聞いたときは、変更したほうが当たる確率が上がることに気が付いたが、ちょっと考えればそれは当たり前のようにも感じた。一緒に聞いていた人の一人は最後まで納得いかない様子で、こちらが即席で作ったのCのプログラムを実行してみせても信じようとはしなかった。以下、Pythonでのプログラムを示す。win_switch)で、以下のような出力を得る。続・簡単ステガノグラフィ...画像を画像に埋め込むTweet前回のなんちゃってステガノグラフィはあまりにも酷い出来だと思ったので、少しばかり改良してみた。画像データのアルファ値を利用していたのをRGBに置き換え、最下位ビットを利用する方法に変更した。アルファ値だと生データを見れば一発で怪しいと分かるが、RGBだと余程注意深くないと分からないだろう。入力データにはテキストだけではなく、バイナリファイルも指定できるようにした。ファイル名は保存されるので、隠したデータを取り出す際もファイル名の指定が不要だ。上記の理由で出力ファイルの指定はない。上のネコの画像(kitten01.png)に下のモルモットの画像(guinea01.jpg)を隠してみる。guinea01.jpg画像を隠し入れた画像(kitten01g.png)を下に示す。最初の画像と見た目はほとんど変わらない。取り出すときは以下のようにする。kitten01g.pngステガノグラフィについての知識なんてほとんど持ち合わせていないので、これがどの程度有効かなんて分からないし、きっと世の中にはもっと効率の良いアルゴリズムなんかがあるのだと思うけど、気にしない。お遊びのプログラミングだから。作る過程でいろいろ考えることが楽しいのだ。出力画像ファイルにはPNGかBMPを利用するのが良い。JPEGは非可逆圧縮により埋め込むデータが壊れるし、GIFはパレットの制限に引っ掛かるためだ。因みに、入力画像ファイルはどのフォーマットでも問題ないはず。このサイトはアップロードした画像を非可逆圧縮するので本記事の画像をそのまま利用してもデータを取り出すことはできません。以下、ソース(covgraph.py)。簡単ステガノグラフィ...テキストを画像に埋め込むTweetPythonでなんちゃってステガノグラフィを作ってみた。画像データにテキストを埋め込んで、メッセージを隠してしまうというわけだ。お遊びで適当に作っただけなので、本格的な使用に耐えうるものではないことをお断りしておく。上に示す画像は何も埋め込まれていないもの。PaSoRiでSuicaの履歴を読み出すの全文が埋め込まれている。これなら変更したことを誰にも気づかれないだろう。使用したソース(covgraph.py)は下に示す。input.txtとする。cover.pngにinput.txtの中身を埋め込み、stego.pngとして出力する。input.txtに代えて直接文字列を指定することもできる。world"が埋め込まれることになる。output.txtとする。前者は標準出力、後者はファイルに書き出す。続・簡単ステガノグラフィ...画像を画像に埋め込むの方がましだと思う。(WS016SH)Tweet以前、こちらでもWillcomが新しいモバイルコミュニケーションマシンを開発という記事を書いたが、本日、その全容が明らかになった。D4」(ケータイWatchより)PCと同等に使えるのは良い。問題はどれだけ快適に使えるかだなぁ。・サクサク使えるなら買う価値ありかな。キーボードは難しいだろうから、ちゃんと使おうと思うならUSBキーボードをセットかな。逆に言えば、キーボードさえクリアすれば、プライベートでも仕事でもそれなりに使えるかも(もちろんサクサク動くこと前提)。あと携帯電話型のヘッドセットはカッコ良い。5月下旬に予約開始、6月中旬に発売らしい。