ここに私が最善の解決策を作成しようとしている問題があります。[0...N]の範囲の負でない整数の有限セットがあります。このセット内の各数値を文字列として表現し、そのような文字列を逆方向に元の数値に変換できる必要があります。したがって、これは全単射関数でなければなりません。
追加の要件は次のとおりです。
- 数値の文字列表現は、元の数値を少なくともある程度難読化する必要があります。したがって、 f(x) = x.toString()のような原始的なソリューションは機能しません。
- 文字列の長さは重要です。短いほど良いです。
- Kの文字列表現を知っている場合、 K+1の文字列表現を推測するのは(ある程度)自明ではないことを望みます。
p.1 & p.2 の明らかな解決策は、Base64 (またはすべての値に適合する BaseXXX) 表記のようなものを使用することです。しかし、追加の労力を最小限に抑えて p.3 に収めることができるでしょうか? 常識では、BaseXXX 値に対して全単射の「String <-> String」関数がさらに必要であることがわかります。助言がありますか?または、3 つの要件すべてを満たすために使用する BaseXXX よりも優れたものがあるでしょうか?