ヤマトメール便のチェックディジットを求めるRubyコード
"求めたいコード(チェックディジット除く11桁)".each_char.with_index.inject(0){|b,(a,i)| b+a.to_i*("46231546231"[i,1].to_i)}%7
Ruby1.8.7で確認。
参考:ヤマト急便のチェックデジットの計算方法 -クロネコヤマトのメール便で- その他(データベース) | 教えて!goo
追記
いろいろ値を変えてみながら試してみたら、どうもコードが連続している限りにおいて、チェックディジットが0..6のループになるようにうまく重み付けされてるみたいだな。チェックディジットが見えないケースがあったので必要に迫られてコード書いたけど、この法則性がわかっていれば大して困らないな。
てことは
(チェックディジットを除く11桁)%7
でよくね?