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}}==