ひたすら 2 桁の掛け算がしたい

世間では「ゴースト暗算」という計算メソッドが話題になっているようです。それに関する本も売れているようで、私は買っていないのですが、ネットで 2 桁の数字同士の掛け算の方法が紹介されていました。結構複雑 (に思える) な手順を踏むので、「むしろ筆算を頭の中でやる方が簡単ではないか?」というのが今のところの正直な感想です。

とはいえ、ただ批判していても面白くないので、練習したら速くなるのかどうか試すために、Emacs でランダムに問題を出して解答までの時間を計るコマンドを用意しました。

(defun 2dmul ()
  (interactive)
  (while t
    (let* ((rand (lambda () (+ (* (1+ (random 9)) 10) (1+ (random 9)))))
           (a (funcall rand))
           (b (funcall rand))
           (answer (* a b))
           (start (current-time))
           (input (string-to-number (read-buffer (format "%d x %d = " a b))))
           (end (current-time))
           (elapsed (+ (* 65536 (- (car end) (car start))) (- (nth 1 end) (nth 1 start)))))
      (message "%s [%d sec], %d x %d = %d (your answer: %d)"
               (if (= input answer) "OK" "NG") elapsed a b answer input))
    (read-event)))

M-x 2dmul で起動します。やめる時は C-g で抜けてください。

昔から計算が苦手なので、速くて 20 秒、普通は 30 から 40 秒、遅いと 1 分以上かかることもあります。ただし「問題は見てもいい」という条件で計っています。問題を見ずに (覚えて) となると、軽く 1 分は超えてしまいました。

さて、まずはゴースト暗算のあの手順を覚えるところからです…。

追記

この記事には 続き があります。