Sha256: 66f73fdddebbaf3e2a66b67dfb13eca03ac4c1ebe862c64d64bb72b3e39027af

Contents?: true

Size: 637 Bytes

Versions: 154

Compression:

Stored size: 637 Bytes

Contents

class Luhn
  def self.create(number)
    test_number = number * 10
    luhn = Luhn.new(test_number)
    return test_number if luhn.valid?
    test_number + 10 - (luhn.checksum % 10)
  end

  attr_reader :number
  def initialize(number)
    @number = number
  end

  def addends
    numbers = []
    number.to_s.reverse.split('').map(&:to_i).each_with_index do |n, i|
      if i % 2 == 0
        numbers << n
      else
        value = n * 2
        value -= 9 if value > 9
        numbers << value
      end
    end
    numbers.reverse
  end

  def checksum
    addends.inject(0, :+)
  end

  def valid?
    checksum % 10 == 0
  end
end

Version data entries

154 entries across 154 versions & 1 rubygems

Version Path
trackler-2.0.8.54 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.53 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.52 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.51 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.50 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.49 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.48 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.47 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.46 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.45 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.44 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.43 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.42 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.41 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.40 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.39 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.38 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.37 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.36 tracks/ruby/exercises/luhn/example.rb
trackler-2.0.8.35 tracks/ruby/exercises/luhn/example.rb