ドミノ・ピザのクイズ

ドミノ・ピザをネットで注文し終わると、続けてクイズが始まる。
ピザが届くまでに答えを考えて、正解すると割引チケットやサイドメニューのクーポンをもらえる。
いつもイージーやノーマルを選ぶけれども、今日はハードモードに挑戦してみた。

今回の問題は、日本の歴代総理大臣の名前で、
1) 名字が1文字
2) 名前が1文字
3) 名字が3文字
4) 名前が3文字
5) 名字と名前を足して3文字以内
の条件で、多いものから順に答えよ、というもの。
見た瞬間、行ける、ピザ半額チケットはもらったと思った。
データベースに入れてSQL使おうか迷ったけれど、普通にスクリプトで解いた方が早そうだったので、Perlで解く事にした。

まずは歴代総理大臣の一覧データを入手しないといけないが、ウェブを検索しても名字と名前が分かれて書かれたページがなかなか見つからないので焦る。
結構たくさんページを見て回って、ようやく見つけた。
まず、ブラウザに表示されてる名前部分を選択してコピーし、Excelにペーストする。
HTMLのテーブルタグをExcelにペーストするといい感じにExcelの列になってくれるので、名前部分の列をコピーし、今度はvimにペーストする。
この時点で「安倍 晋三(第2次)」みたいに邪魔な文字列が混じってるので、vimの置換機能で「安倍,晋三」に変換する。さらにuniqで重複を取り除く。
ここからPerlで問題を解く。
急いだせいでタイプミスなどあったが5分程で出来た。処理を見直したが問題ない。
Perlを実行して出た答えを、ドミノ・ピザのページに戻って、入力した。

しばらくして、制限時間終了。答え合わせが始まる。
絶対問題ないはず。
問題ないはず。
…問題ないはず。
…だったが、まさかの不正解の判定。
そんな馬鹿なと再度処理を見直すと、しまった、元データが「歴代総理大臣の一覧」ではなく「戦後の歴代総理大臣の一覧」のページだった。
痛恨のミス。
やっと名字と名前が分かれて書かれたページを見つけたので、舞い上がってしまった。よく考えれば総理大臣が少なすぎた。
もうドミノ・ピザは二度と注文しない。

 #!/usr/bin/env perl
 use utf8;
 @list = qw(
     芦田,均
     安倍,晋三
     伊東正義
     宇野,宗佑
     羽田,孜
     海部,俊樹
     岸,信介
     吉田,茂
     宮沢,喜一
     橋本,龍太郎
     佐藤,栄作
     細川,護煕
     三木,武夫
     小泉,純一郎
     小渕,恵三
     森,喜朗
     菅,直人
     石橋,湛山
     村山,富市
     大平,正芳
     池田,勇人
     竹下,登
     中曽根,康弘
     田中,角栄
     東久邇宮,稔彦
     鳩山,一郎
     鳩山,由紀夫
     福田,康夫
     福田,赳夫
     幣原,喜重郎
     片山,哲
     麻生,太郎
     野田,佳彦
     鈴木,貫太郎
     鈴木,善幸
 );
 
 $hit = 0;
 foreach (@list) {
     ($sei, $mei) = split ',', $_;
     if (length($sei) == 1) {
         $hit++;
     }
 }
 print "1: $hit\n";
 $hit = 0;
 foreach (@list) {
     ($sei, $mei) = split ',', $_;
     if (length($mei) == 1) {
         $hit++;
     }
 }
 print "2: $hit\n";
 $hit = 0;
 foreach (@list) {
     ($sei, $mei) = split ',', $_;
     if (length($sei) == 3) {
         $hit++;
     }
 }
 print "3: $hit\n";
 $hit = 0;
 foreach (@list) {
     ($sei, $mei) = split ',', $_;
     if (length($mei) == 3) {
         $hit++;
     }
 }
 print "4: $hit\n";
 $hit = 0;
 foreach (@list) {
     ($sei, $mei) = split ',', $_;
     if (length($mei) + length($sei) <= 3) {
         $hit++;
     }
 }
 print "5: $hit\n";

Markdownの記法について

Pukiwikiで公開している技術メモをブログのWordPressにまとめてしまおうかと検討している。
そこで問題なのがWiki記法。
WordPressにはPukiwki記法のプラグインはあまり良い物が存在しない。
Markdown記法プラグインは幾つかあるけれど、PukiwkiとMarkdownを比較して、Pukiwikiが優れた記法に思える。
Markdownで特に嫌なのがWikipediaに書いてある、

* 順序無しリストのアイテム
  * サブアイテムは4つのスペースでインデントする
* 順序無しリストの別のアイテム

<!– dummy comment line for breaking list –>

1. 順序付きリストのアイテム
2. 順序付きリストの別のアイテム

のように、リストの次に別のリスト(または段落)を続ける場合はコメントタグを挿入する必要がある、という仕様。
これは本当にイケてないと思う。
Pukiwikiは改行を入れるだけでリストは終了したと見なされる。
また、リストのサブアイテムにはスペースを4つも入力する必要があり面倒。Pukiwikiはインデントの深さに応じて-を重ねるだけで良い。
順序付きリストはいちいち、1. 2. 3.と連番を振る必要があるので、後からリストにアイテムを追加・削除すると順番が狂う。連番でなく、1. 1. 1.と同じ番号で続けても良いのだけれど(ウェブで見る場合は連番に変換される)、プレーンテキストで見る場合は奇妙な見た目になりスッキリしない。
Pukiwkiはマーカーが+ならウェブで見る場合は連番に変換される。
他にも、リンクはPukiwkiのようにhttp://から始まる文字列を書けば勝手にURLに解釈してくれる方が楽だと思う。

Markdown記法はRedmineやTracのWiki記法に比べればマシだと思うし、プレーンテキストで見るなら良いと思うけれども、ウェブで見るのが前提ならPukiwiki記法の方が優れてると思う。

PuTTY 0.63

PuTTY 0.63がリリースされたので、自分のWindowsマシンのPuTTYを入れ替えました。
PuTTYのようなSSHターミナルソフトは脆弱性を放置すると重大な被害を受けうるので、常に最新版を使用するべきでしょう。
(マルウェアが常駐しているpagent.exeを勝手に利用したら?)
PuTTYはいろんな派生版が存在しますが、いくつかはメンテナンスされてなく、そのようなソフトの利用は止めた方良いでしょう。
WinSCPやTortoiseSVN等のSSHプロトコルの処理に内部でPuTTYファミリを使っているソフトも同様に最新版を使った方が良いです。

個人的にPuTTYは派生版のiceiv+puttyのDirectWrite版を使ってますが、こまめにメンテナンスされ素早く本家PuTTYに追随してくれてます。
このPuTTYはDirectWriteを採用しているので、フォントが綺麗で行間の微調整が出来、非常に重宝します。
とても良いソフトで、有り難いです。

putty063

APPキー

先日、Windowsのコンソールソフト、ConEmuのマニュアルを読んでいると、キーボード設定の項に

Apps+F | Search text in the console

と書いてあった。Apps+FのAppsって何だろう?
調べてみると、通常はキーボードの右下にある、右クリックをする為のキーをAPPキーと呼ぶようだ。
知らなかった。
ConEmuはショートカットキー設定が大量にあり、CTRLキー、ALTキー、WINキーでは足りず、APPキーも利用しているようだ。
実際、私もWindows上ではAutoHotKeyやその他ユーティリティソフトで多くのショートカットキー設定をしていて、キーコンビネーションが重複してしまう事が良くある。
キーボード中心の操作体系を目指すと、キーの種類って多ければ多い程いいなと思う。

appkey