ヤマトメール便のチェックディジットを求める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

でよくね?