アニメ『91Days』(ナインティワンデイズ)
マフィアの闘争で両親と弟を失ってしまった主人公の復讐がハードボイルドで描かれます。91daysというタイトルからして、復讐が91日間なんでしょうね。6話ぐらいまで見ましたが、復讐劇というよりも、策を使ったマフィアの闘争が面白いです。復讐するべき人物とは友情が芽生えるのでしょうけど、人生を復讐に捧げた主人公は友情より復讐を選ぶのでしょうか、気になります。暴力シーンが多いのですが、先が気になるので、最終回まで視聴確定です。
calコマンドでカレンダーが表示できますが、タイトル画像のような、復讐用の91日カレンダーを作ってみたいと思います。復讐最終日は12月31日に設定します。
まずは、calコマンドの使い方を確認します。
calコマンドはオプションや引数なしで実行すると、今月のカレンダーを表示します。
~$ cal
~$ cal aug 2016
~$ cal 8 2016
今日が2016年8月なら、上3つのコマンドはすべて同じ結果が表示されます。
3ヶ月分表示するなら、-3オプション。
~$ cal -3
前後の月の表示数も指定することができます。
~$ cal -B1
Bは、BeforeのB、AはAfterのAですね。
~$ cal -A3
一年間を表示するなら取得したいカレンダーの年をそのまま指定します。
~$ cal 2016
1月1日からの日数がほしい場合は、-jオプションを指定します。
~$ cal -j 2016
(省略)
さて、91daysカレンダーです。
復讐最終日を12月31日に設定しますので、その日を含め91日逆算して、復讐初日を算出します。
~$ date --date "20161231 90 days ago" 2016年 10月 2日 日曜日 00:00:00 JST ~$
算出した10月2日の、-j時の日付をさきほどのカレンダーから確認します。276でした。
cal -j 2016で表示される日付を置換するPerlスクリプトを作成しました。275としているのは、1から始めるためです。
~$ cat 91days.pl open(FH,"cal -j 2016 |"); while(<FH>){ unless(/月/){ s/(\d+)/days($1)/ge; } print; } close(FH); sub days{ my($s) = @_; $ldays = $s - 275; if(($ldays < 1) or ($ldays > 91)){ $s =~ s/./-/g; }else{ $s = " " x ((length $s) - (length $ldays)). $ldays; } return $s; }
結果は、タイトル画像のようになりますが、復讐用なので日常生活には役に立ちませんね。
コメント