Sha256: fd1e21633b1f950946c768510b3a789d64acbb5fc20e66aa48fa631249569c29

Contents?: true

Size: 590 Bytes

Versions: 330

Compression:

Stored size: 590 Bytes

Contents

local function addends(s)
  local result = {}
  for i = #s, 1, -1 do
    local digit = tonumber(s:sub(i, i))
    if #result % 2 > 0 then digit = digit * 2 end
    if digit > 9 then digit = digit - 9 end
    table.insert(result, 1, digit)
  end
  return result
end

local function checksum(s)
  local checksum = 0
  for _, addend in ipairs(addends(s)) do
    checksum = checksum + addend
  end
  return checksum
end

return {
  valid = function(s)
    s = s:gsub(' ', '')
    if #s < 2 then return false end
    if s:find('%D') then return false end
    return checksum(s) % 10 == 0
  end
}

Version data entries

330 entries across 330 versions & 1 rubygems

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