|
Boost : |
From: Paul A. Bristow (boost_at_[hidden])
Date: 2002-11-20 14:54:47
Driven by an local requirement, I have recently coded a Verhoeff decimal check
digit program,
based on the Java calculator embedded in
http://www.augustana.ab.ca/~mohrj/algorithms/checkdigit.html
by Jonathon Mohr, mohrj_at_[hidden]
Augustana University College, 4901 - 46 Ave., Camrose, AB T4V 2R3 Canada
For example, if you have a decimal number 1357, the Verhoeff check digit is 3
and if you enter the complete number 13573 incorrectly nearly all human errors,
like transposition, will be detected.
(But I note that this appears to give different results to the one in Numeric
Recipes in C++ - someone wrote about this on Boost recently - which references
the same sources, mainly Neal AR Wagner and Paul S Putter, Comm of the ACM,
32(1) 106 to 110, and the original but difficult to obtain paper by J M
Verhoeff).
This is by far the best human error detecting check digit scheme and would seem
to be a good candidate for a Boost library (though ISBN, credit card and US EFT
schemes could also be made available though they are not recommended for new
applications).
Two questions:
1 Is there any interest in these schemes? Which?
2 It would be valuable to generalise this to other more compact number systems,
for example ones based on 16 (familiar Hexadecimal) and 32 (letters and
numbers).
(I have recently opened a bank account with a 13 decimal digit identifier! This
could be as little as 5 with a 32 character letters and numbers scheme.)
The Deutsche Bundesbank bank notes are numbered using letters as well as numbers
and use a extended Verhoeff check digit scheme. Does anyone have any details,
especially programs, showing how this works? Or does anyone know of other
extensions to other number & letter schemes?
Thanks
Paul
Paul A Bristow, Prizet Farmhouse, Kendal, Cumbria, LA8 8AB UK
+44 1539 561830 Mobile +44 7714 33 02 04
Mobile mailto:pabristow_at_[hidden]
mailto:pbristow_at_[hidden]
Numerical Recipes in C++, p 904 - 905W H Press, S A Teukolsky, W T Vettering, B
P Flannery, ISBN 0 521 75033 4.
SNOMED® Clinical Terms (First Release Technical Reference Manual
First Release (January 2002), Annex B. Check-digit computation, p 30 to 34
http://www.snomed.org/Spanish%20Documents/SNOMEDCT_Core_Technical%20Reference%20
Manual_US.pdf
uses Jonathan Mohr Javascript checkdigit.htm (copy in checkdigit.txt)
based on code at http://www.augustana. ab.ca/~mohrj/algorithms/checkdigit.html
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk