Tambourine作業メモ

主にスキル習得のためにやった作業のメモ。他人には基本的に無用のものです。

ISBNのチェックがばぐってる

wikipediaより

なお、計算結果が 10 になった場合、
10 の代わりに X(アルファベットの大文字)を用いる。
また、11 になった場合は、0 となる。

「また、」以降が抜けてた(笑)

  def chkdigit10(isbn)
    n = 10
    a = 0
    isbn[0,9].each_byte do |i|
      a += (i-48) * n
      n -= 1
    end
    a = 11 - a % 11
-   a == 10 ? "X" : a.to_s
+   case a
+   when 10
+     "X"
+   when 11
+     "0"
+   else
+     a.to_s
+   end
  end