Thursday, March 24, 2016

パターンのある文の翻訳 (Emacs Lisp)

次のような練習問題(一部)がある.これを日本語に翻訳したいと思っている.

The $200$ is the $\\green{\\text{whole}}$. We are trying to find the $\\pink{\\text{part}}$ that makes up $11\\%$ of it:
The $25$ is the $\\green{\\text{whole}}$. We are trying to find the $\\pink{\\text{part}}$ that makes up $12\\%$ of it:

良く見るとこれは数字が異なるだけの問題であるので,regexp で,次の置換をすれば良いことがわかる.

The $\(.*\)$ is the $\(.*\)$. We are trying to find the $\(.*\)$ that makes up $\(.*\)$ of it:
$\1$ は $\2$ です.私達はその $\4$ となるだけの $\3$ を探しています:

しかし,

The $200$ is the $\\green{\\text{whole}}$. We are trying to find the $\\pink{\\text{part}}$ that makes up $11\\%$ of it:



The $\(.*\)$ is the $\(.*\)$. We are trying to find the $\(.*\)$ that makes up $\(.*\)$ of it:

にするのも面倒であるので,これもコンピュータにやってもらおうと

(query-replace-regexp "\\$[^\\$]+\\$" "$\\\\(.*\\\\)$")

と書いたのであるが,なぜかこの regexp では $\\green{\\text{whole}}$ の部分がマッチしない.

仕方ないので,次のようなプログラムを書いた.

(let ((finishp nil))
  (while (null finishp)
    (progn
      (setq match-start (search-forward "$" nil t))
      (setq match-end   (search-forward "$" nil t))
      (setq finishp (or (null match-start) (null match-end)))
      (if (null finishp)
          (progn
            (kill-region match-start match-end)
            (insert "\\(.*\\)$"))))))

これは上手く働くのだが,しかしどうして上記の regexp が上手くいかないのかわからない.どなたか理由のわかる方教えて下さい.

Thursday, March 3, 2016

Super Tuesday

たまたまスーパーチュースデーと呼ばれる日にアメリカにいて,そこでトランプ氏がいくつかの州で勝利する報道を見ました.Make america great again をモットーにしている彼の言葉を聞くと私の考えている great とはずいぶん意味が異なることを感じます.「メキシコとの間に壁を作って分断するためにメキシコにその費用を払わせる.」「地球温暖化は信じていない」「公共の健康保険はいらない」「ISISを爆撃したい」「死刑の復活をせよ」などなど(参考: http://www.nytimes.com/interactive/2016/us/elections/donald-trump-on-the-issues.html)

彼は現在,勝ち進んでいます.私には,国内に問題があればそれは他の国が悪いことであり (例: メキシコとの間の壁),問題は戦争をしかければ解決することであり (例: ISIS),問題があっても,信じない.で解決する (例: 温暖化) のように聞こえます.死刑のように,国家権力は命を奪う権利がある.というものに賛成することや,実質的に貧しい人には医療を受ける機会もなくて良いという言動と理解できます.これが great な国であれば,彼が大統領になった時に何をするのかと予想すると,戦争が最初に思いつきます.どこと戦争するのかはわかりません.ロシア,北朝鮮,中国,メキシコ,イスラム国家のいづれか?  そしてそれはアメリカの負債を増加させ,国家を疲弊させ,テロの連鎖の原因となるように思います.一方で実際に戦うのは誰なのか?  確かアメリカばかりが世界を守るのはもう終りにしようという発言もあったと記憶しています.それは同盟国に戦えということでしょうか.ヨーロッパがそれに素直に従うのはあまり想像できないので,実際に戦うのは日本や韓国ということになるかもしれません.これが単なる想像で終われば嬉しいですが,そうなのか,自信が持てません.