質問

チェックディジットスキームのVerhoeffアルゴリズムを実装していますが、どの順列サイクルが順列テーブルの基礎を形成するかについて、Webソースには不一致があるようです。

ウィキペディア 使用:(36)(01589427)

その間 どうやら, 、数値レシピは別のサイクルを使用します この本 使用:(0)(14)(23)(56789)、Wintersによる1990年の記事から引用。また、VerhoeffがWikipediaの引用を1つ使用したことにも注目しています。

さて、私の数の理論は少し錆びていますが、ウィキペディアのサイクルは8番目のパワーの後に明らかに繰り返されますが、本のサイクルはs^8 = sと言っていますが、表2.14(b)には2サイクルに他のエラーがあるため、とにかくこれは疑わしいです。

残念ながら、私は元の記事のコピーを持っていません(そして、40年前の知識がまだ出版社によって身代金に拘束されていることを支払う/嫌悪感を払うことができません)、またチェックする数値レシピのコピーがあります(そして、オンラインで表示するには、パラノイア誘発コピー保護プラグインをインストールします)。

どちらが正しいか知っている人はいますか?どちらも正しいですか?

役に立ちましたか?

解決

数値レシピの古い版があります ここ PDFとして。 Verhoeffアルゴリズムは、セクション20.3で説明されています。ウィキペディアの記事と同じ順列を使用します。

他のヒント

順列(0)(14)(23)(56789)は、順列(36)(01589427)よりも優れています。これは、(36)(01589427)が単一の転置エラーの88.89%しか検出できず、(0)(14)(23)(56789)それらすべてを検出できるためです。 (36)(01589427)が使用されている場合、数値コード716をチェックディジットとして指定すると考えてください。 IE、コードは7160になります。しかし、数字1と6が転置されている場合、このチェック桁スキームはチェック合計がゼロであるためエラーを与えません。これは(0)(14)(23)(56789)の場合は当てはまりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top