重複の可能性:
一意かつ決定論的な方法で、2 つの整数を 1 つにマッピングする
2 つの整数 (Ruby) のペアの一意の識別子を作成しようとしています。
f(i1,i2) = f(i2, i1) = some_unique_value
つまり、i1+i2、i1*i2、i1^i2 - (i1>i2) と同様に一意ではありませんか? "i1" + "i2" : "i2" + "i1".
次の解決策は問題ないと思います。
(i1>i2) ? "i1" + "_" + "i2" : "i2" + "_" + "i1"
しかし:
- 結果をDBに保存してインデックス化する必要があります。したがって、私はそれが整数であり、できるだけ小さいことを好みます。
- Zlib.crc32(f(i1,i2)) は一意性を保証できますか?
ありがとう。
更新:
実際、結果が整数でなければならないかどうかはわかりません。多分私はそれを10進数に変換できます: (i1>i2) ? i1.i2 : i2.i1
?