Sunday, May 08, 2005

modulo 10

Calcul du chiffre-clé d'après le modulo 10, récursif

Pour le calcul du chiffre de contrôle dans des données des banques ou de la poste, un algorithme nommé "modulo 10 récursif" est parfois utilisé. La documentation des banques que j'ai vue présente un graphique démentiel et incompréhensible pour ce calcul. C'est utilisé dans des machins comme les bulletins "ESR", "BESR", "BVR", les numéros de compte etc.

Voilà une version toute simple en Perl, adaptée à partir des versions C et Basic de cette page.

sub mod10 {
# take number without control digit, return control digit
my @nums = split //, shift;
my @T = (0, 9, 4, 6, 8, 2, 7, 1, 3, 5);
my $n = 0;

for (@nums) {
$n = $T[ ($n + $_) % 10 ];
}
return (10 - $n) % 10;
}

C'était finalement tout simple. Les gens des banques doivent être des gens bizarres...

Labels: