体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

【言語不問】正規表現で暗号を解こう!エニ熊の暗号文【コーディング】解答と解説

正規表現で暗号を解こう!エニ熊の暗号文

本問題は、正規表現を利用したコードで簡単に解ける問題を、言語不問でコーディングして解くというものでした。

それでは以下、問題とその解答を見ていきましょう。

問題のオープニング

 あなたは、インターポールに協力しているホワイトハッカーだ。そんなあなたの元に、インターポールの友人、鉄形がやって来た。

「実は今おれは、世界的テロリストの Any Bear を追っている。そいつが、仲間たちとやり取りしている暗号文を入手した。

 どうやら奴らは”正規表現”を使い、”短いプログラム”でその暗号文を解読しているらしい。

 この暗号文には、Any Bear 一味が、次に爆破する予定の都市名が記されているらしい。頼む○○よ。この暗号文を、何とかして解読してくれないか」

 Any Bear は、日本では”エニ熊”と呼ばれているテロリストだ。よく考えれば解ける暗号文を使い、犯行声明を出すことで有名だ。

「わかった。”正規表現”で、”短いプログラム”で解読できるのだな」

 鉄形は、暗号文の一部をあなたに手渡した。それは、以下のようなものだった。

dtdvovuaueazebzjbnjxgnglklqxqfifswscicrmrymhphwpo

vdvybyeborolrtzthzxuxkuqfqwkwapagfgjnjincscmspm

emeuauyknkfyfzdzwdbwxixjbjtstrhrchqcvsvologqgpap

ntnbtmbcmscrervovwhkhawafgfpgypjyujdxdqxkqizilz

 解析の結果、あなたは1つの単純な法則で、暗号文を解読できることに気が付いた。

「なるほど。文字列を先頭から見ていき、文字の並びが『ABA』のようになっている3文字を、1回だけ『B』に置換する。この処理を置換不可能になるまで繰り返すのか」

 あなたは、簡単な解読サンプルを作り、鉄形にメモを手渡した。

wbwvcvhczhdzmdpmyjnjpnsesiyiulugxgflftotaokqkxqr

bvcvhczhdzmdpmyjnjpnsesiyiulugxgflftotaokqkxqr

bvcvhczhdzmdpmyjnjpnsesiyiulugxgflftotaokqkxqr

bchczhdzmdpmyjnjpnsesiyiulugxgflftotaokqkxqr

「鉄形。こんな感じで置換していくんだ。置換できなくなるまで、続けてみるぞ」

wbwvcvhczhdzmdpmyjnjpnsesiyiulugxgflftotaokqkxqr
bvcvhczhdzmdpmyjnjpnsesiyiulugxgflftotaokqkxqr
bchczhdzmdpmyjnjpnsesiyiulugxgflftotaokqkxqr
bhzhdzmdpmyjnjpnsesiyiulugxgflftotaokqkxqr
bzdzmdpmyjnjpnsesiyiulugxgflftotaokqkxqr
bdmdpmyjnjpnsesiyiulugxgflftotaokqkxqr
bmpmyjnjpnsesiyiulugxgflftotaokqkxqr
bpyjnjpnsesiyiulugxgflftotaokqkxqr
bpynpnsesiyiulugxgflftotaokqkxqr
bpypsesiyiulugxgflftotaokqkxqr
bysesiyiulugxgflftotaokqkxqr
byeiyiulugxgflftotaokqkxqr
byeyulugxgflftotaokqkxqr
beulugxgflftotaokqkxqr
belgxgflftotaokqkxqr
belxflftotaokqkxqr
belxltotaokqkxqr
bextotaokqkxqr
bexoaokqkxqr
bexakqkxqr
bexaqxqr
bexaxr
bear

 ”bear”という文字列が現れたことに鉄形は驚いた。”bear”は、憎きテロリスト”エニ熊”の名前の一部である。

 鉄形は興奮して、あなたに体を寄せてきた。

「○○よ。すぐに、暗号解読のプログラムを作ってくれ。超特急だ!」

1 2 3 4 5 6次のページ
CodeIQ MAGAZINEの記事一覧をみる
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。