アニメ『ジョーカー・ゲーム』(2015)
戦時中のスパイ機関を題材にした短編ミステリーです。
毎回主役が変わり、たいていは一話完結なので、最初から見なくてもいいし、途中から見ても楽しめます。
実際私は途中話から数話を見て、これは面白い! と思って、1話を見始めました。なのでどこから見ても大丈夫だと思います。
1話完結話の場合は、他のミステリー同様、最後に謎が解けますので、見終わって、あぁ、なるほどポン!、と手を打つことになります。
私の場合は、短編小説でも読み返すことが多いので、、いや、待てよ……、巻き戻し、再生、巻き戻し、再生と、何度も見て納得する楽しみ方になっていますが。
この画像は、angoというテキストファイルの内容を表示した時の画像です。
偶数列、奇数列を別々に抽出すると、文字が現れる簡単な暗号ですが、真面目にcutコマンドの-bオプションに、1,3,5,7…と指定していては能がありません。
seqコマンドを使って-bオプション生成しましょう。
takk~$ cut -b`seq -s, 1 2 48` < ango ####### # # ### # ## # # # # # # # ##### # # # # # # # # # # # ## # ####### # # ### takk~$ cut -b`seq -s, 2 2 48` < ango ##### # # # # # ## ## # # # # # # # # # # #### # # # # # # # # # ####### # # # # # # ##### # # # # takk~$
上段がENI、下段にGMAという文字列が抽出されました。ENIGMAです。
ENIGMA(エニグマ)は、第二次世界大戦でナイツ・ドイツが用いていた暗号機の名前です。
さて、cutでの文字列抽出は割と簡単に出来ましたが、文字列を交互に合成するのは、簡単にできる気がしませんね。どうやるのでしょうか。
まずは、それぞれのバナー出力の結果を文字数を揃えて格納します。
takk~$ banner ENI | tr '\n' '\0' | xargs -0 printf "%-24s\n" > eni takk~$ banner GMA | tr '\n' '\0' | xargs -0 printf "%-24s\n" > gma
次は、rubyを使います。
eniとgmaファイルを読み込んで、それぞれa1、a2に格納します。
配列a1とa2をzipで結合します。このzipメソッドは、ズボンのジッパーのように配列どうしがくっつきますが、zipしたままですと配列が2次元になってしまいますので、flattenで一次元配列にしています。最後に2つ連続している改行コードの片方を削って完成です
takk~$ ruby -e ' a1=File.binread("eni").unpack("C*"); a2=File.binread("gma").unpack("C*"); print a1.zip(a2).flatten().pack("C*").gsub(/\n\n/,"\n")' # ########### ## ## # ### ## # #### ### ## # ## ## ## # ## # # # ### # #### # # ## ## ## # # # ## # ## # ## # # ### # # # ## # ## # ## # # # # ########### ## ## # # # # # takk~/blog/lic$
ENIGMA暗号機を打ち破ったのは、コンピュータが誕生するのに重要な役割を果たしたアランチューリング。暗号解読に成功したことで、戦争終結が早まり多くの命が死なずに済んだとも言われています。
英雄のはずですが、彼自身は衝撃的で悲しい末路を辿っています。イミテーション・ゲームという映画にもなっていますので見ておきたい作品です。
コメント