Emacs Lispで解く月刊少女野崎くんED「ウラオモテ・フォーチュン」

Emacs Lispで解く月刊少女野崎くんED「ウラオモテ・フォーチュン」

今期オススメのアニメのひとつである「月刊少女野崎くん」、ED曲の「ウラオモテ・フォーチュン」には以下のフレーズが出てきます。

キライの ハンタイの ハンタイの ハンタイの ハンタイの  
そのさらにハンタイの
キモチを伝えるのって 何だか難しい

ぐぬぬ、まるでバカボンのパパ話法(「賛成のハンタイなのだ」)です。これではスキなのかキライなのかよく分かりません。

ここはひとつ、Emacs Lispでスキなのかキライなのかはっきりさせてみましょう。
Emacsのscratchバッファ(lisp-interaction-modeなバッファならどれでもOKです)で以下を実行してみます。

(setq キライの nil)

(defun ハンタイの(p) (not p))
(defun そのさらにハンタイの(p) (not p))
(defun キモチを伝えるのって(p) (if p 'スキ 'キライ))
(defun 何だか難しい(p) p)

(何だか難しい
 (キモチを伝えるのって
  (そのさらにハンタイの
   (ハンタイの
    (ハンタイの
     (ハンタイの
      (ハンタイの キライの)))))))
スキ

無事に「スキ」というお返事(?)が得られました。

が、曲のラストでさらに苛烈なフレーズが出てきます。

キライの 
ハンタイの ハンタイの ハンタイの ハンタイの ハンタイの ハンタイの 
ハンタイは?

これはいけません。スキなのかキライなのか考えているうちに曲が終わってしまいます。これもEmacs Lispで解いてみましょう。

(setq キライの nil)

(defun ハンタイの(p) (not p))
(defun ハンタイは?(p) (if (not p) 'スキ 'キライ))

(ハンタイは?
 (ハンタイの
  (ハンタイの
   (ハンタイの
    (ハンタイの
     (ハンタイの
      (ハンタイの キライの)))))))
スキ

こちらも無事に「スキ」というお返事が得られました。

まとめ

月刊少女野崎くんED曲の「ウラオモテ・フォーチュン」をEmacs Lispで解いてみました。『(キライの (ハンタイの (ハンタイの ...)))』のように、歌詞の並び通りにしたかったのですが、実際は単語の順番をひっくり返しての処理になり、日本語は後置演算子なのか……と変なことに気がついてしまいました。