ISBN13 check digit: Difference between revisions
Content added Content deleted
Langurmonkey (talk | contribs) No edit summary |
Langurmonkey (talk | contribs) No edit summary |
||
Line 3: | Line 3: | ||
;Task: |
;Task: |
||
Validate the check digit of an ISBN-13 code. Use some good and bad codes of your choosing for testing. |
Validate the check digit of an ISBN-13 code. Use some good and bad codes of your choosing for testing. |
||
Multiply every other digit by 3. Add the digits together. Take the remainder of division by 10. If it is 0, the ISBN-13 check digit is correct. |
|||
;See also: |
;See also: |
||
See https://isbn-information.com/the-13-digit-isbn.html for details on the method of validation. |
<p>See https://isbn-information.com/the-13-digit-isbn.html for details on the method of validation. |
||
<br><br> |
<br><br> |
Revision as of 16:54, 4 December 2019
![Task](http://static.miraheze.org/rosettacodewiki/thumb/b/ba/Rcode-button-task-crushed.png/64px-Rcode-button-task-crushed.png)
You are encouraged to solve this task according to the task description, using any language you may know.
- Task
Validate the check digit of an ISBN-13 code. Use some good and bad codes of your choosing for testing.
Multiply every other digit by 3. Add the digits together. Take the remainder of division by 10. If it is 0, the ISBN-13 check digit is correct.
- See also
See https://isbn-information.com/the-13-digit-isbn.html for details on the method of validation.
langur
<lang langur>val .isbn13checkdigit = f(.n) {
val .s = replace(.n, "-", "") if len(.s) != 13 { return false } # multiply every other number by 3 val .nums = map( f(.i, .d) if(.i rem 2 == 0: .d x 3; .d), series(13), map f .c-'0', s2cp .s, ) fold(f .x + .y, .nums) rem 10 == 0
}
val .tests = h{
"978-1734314502": true, "978-1734314509": false, "978-1788399081": true, "978-1788399083": false,
}
for .key in sort(keys .tests) {
val .pass = .isbn13checkdigit(.key) write .key, ": ", .pass writeln if(.pass == .tests[.key]: ""; " (ISBN-13 CHECK DIGIT TEST FAILED)")
}</lang>
- Output:
978-1734314502: true 978-1734314509: false 978-1788399081: true 978-1788399083: false