アニメ『ジョーカー・ゲーム』(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暗号機を打ち破ったのは、コンピュータが誕生するのに重要な役割を果たしたアランチューリング。暗号解読に成功したことで、戦争終結が早まり多くの命が死なずに済んだとも言われています。
英雄のはずですが、彼自身は衝撃的で悲しい末路を辿っています。イミテーション・ゲームという映画にもなっていますので見ておきたい作品です。


コメント