RosettaCodeData/Task/ISBN13-check-digit/Lua/isbn13-check-digit.lua
2024-03-06 22:25:12 -08:00

41 lines
812 B
Lua

function checkIsbn13(isbn)
local count = 0
local sum = 0
for c in isbn:gmatch"." do
if c == ' ' or c == '-' then
-- skip
elseif c < '0' or '9' < c then
return false
else
local digit = c - '0'
if (count % 2) > 0 then
sum = sum + 3 * digit
else
sum = sum + digit
end
count = count + 1
end
end
if count ~= 13 then
return false
end
return (sum % 10) == 0
end
function test(isbn)
if checkIsbn13(isbn) then
print(isbn .. ": good")
else
print(isbn .. ": bad")
end
end
function main()
test("978-0596528126")
test("978-0596528120")
test("978-1788399081")
test("978-1788399083")
end
main()