ISBN13 check digit: Difference between revisions
Content added Content deleted
(Add Quackery) |
|||
Line 1,334: | Line 1,334: | ||
('978-1788399081', True) |
('978-1788399081', True) |
||
('978-1788399083', False)</pre> |
('978-1788399083', False)</pre> |
||
=={{header|Quackery}}== |
|||
<lang quackery>[ char 0 char 9 1+ within ] is digit? ( c --> b ) |
|||
[ 1 & ] is odd? ( n --> b ) |
|||
[ [] swap ]'[ swap |
|||
witheach [ |
|||
tuck over do |
|||
iff [ dip join ] |
|||
else nip |
|||
] drop ] is filter ( [ --> [ ) |
|||
[ 0 swap |
|||
witheach [ |
|||
char->n i^ odd? |
|||
iff [ 3 * + ] |
|||
else + |
|||
] ] is checksum ( $ --> n ) |
|||
[ filter digit? |
|||
dup size 13 = not |
|||
iff [ drop false ] done |
|||
checksum 10 mod 0 = ] is isbn ( $ --> b ) |
|||
[ dup echo$ say ": " isbn |
|||
iff [ say "Good" ] |
|||
else [ say "Bad" ] cr ] is isbn-test ( $ --> ) |
|||
$ '978-1734314502' isbn-test |
|||
$ '978-1734314509' isbn-test |
|||
$ '978-1788399081' isbn-test |
|||
$ '978-1788399083' isbn-test</lang> |
|||
{{out}} |
|||
<pre> |
|||
978-1734314502: Good |
|||
978-1734314509: Bad |
|||
978-1788399081: Good |
|||
978-1788399083: Bad |
|||
</pre> |
|||
=={{header|Racket}}== |
=={{header|Racket}}== |