Sha256: b19325cf27d9954716ebf3c995dd444c169783af6b853c7cc7867b3d2301f8ea

Contents?: true

Size: 488 Bytes

Versions: 242

Compression:

Stored size: 488 Bytes

Contents

class Luhn
  DOUBLE = [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
  DOUBLE.freeze

  def self.valid?(string)
    Luhn.new(string).valid?
  end

  def initialize(string)
    @string = string.tr(' ', '')
  end

  def checksum
    @string.
      reverse.each_char.with_index.
      reduce(0) {|sum, (c, i)| sum + (i.odd? ? DOUBLE[c.to_i] : c.to_i) }
  end

  def valid?
    clean? && (checksum % 10).zero?
  end

  def clean?
    @string.match(/^\d{2,}$/)
  end
end

module BookKeeping
  VERSION = 1
end

Version data entries

242 entries across 242 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.179 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.178 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.177 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.176 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.175 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.174 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.173 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.172 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.171 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.170 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.169 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.167 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.166 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.165 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.164 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.163 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.162 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.161 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb
trackler-2.2.1.160 tracks/ruby/exercises/luhn/.meta/solutions/luhn.rb