Just one minor nit: Christian Neukirchen <chneukirchen / gmail.com> writes: > def luhn?(n) > f = 2 > (n.delete("^0-9").reverse.split(//).map{|d|d.to_i}. > inject(0) { |a,e| f=3-f; a + (e*f > 9 ? e*f-9 : e*f) } % 10).zero? > end You do know that (e*f > 9 ? e*f-9 : e*f) is equivalent to e*f%9, right? So that makes this method: def luhn?(n) f = 2 (n.delete("^0-9").reverse.split(//).map{|d|d.to_i}. inject(0) { |a,e| f=3-f; a + e*f%9 } %10).zero? end (I still like my short version better, but too each his own) -- s=%q( Daniel Martin -- martin / snowplow.org puts "s=%q(#{s})",s.to_a[1] ) puts "s=%q(#{s})",s.to_a[1]