算譜の記2004-12-04より:!&quot;#$%&amp;'()*+,-./:;&lt;=&gt;?@[\\]^_`{|}~0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZzという94種類の文字のなかから、ちょうど、16文字つかって、文字列を作ります。99999999999999999)基本的には、基数変換の拡張で考えることができる。以下の説明では最下位桁を0桁目、その左を1桁目...で最上位桁(一番左の桁)を15桁目と言うことにする。文字の重複を許したときこれはターゲット値を94進数で表せば良いだけ。!!!!!!!;6'uVO%_e重複を許さないとき最上位桁は94通り、次は93通り...で最下位桁は94-15=79通りの選択肢がある。79x80x81x...x93となる。上のbase-convは重みベクタを自由に与えられるように作ってあるので、そういう重みベクタを与えてやれば良い。最後の文字列に変換するところでは、上位桁で使った文字を除いた文字列に対してインデックスする。!&quot;#$%&amp;'fosI;t`Hg重複を許さない組合せのとき今度は各桁の重みが異なるだけでなく、各桁の数値によっても重みが変化する。規則をさぐるために、まず簡単な例から考えてみよう。わかりやすくするために、各桁を表すのにアラビア数字を使う。使う文字数をP、総桁数をDとする。D=16というわけだ)。Dに対して、全ての得られる列を順に列挙してみる。規則性がわかりやすいように並べてある。δ(v)の各桁は次のように計算される。