私は9つの製品を持っています。バスケットは、各製品がバスケットに0〜9回現れるように、製品の任意の組み合わせを含むことができる。たとえば、basket1にはproduct1の0、product2の3、product3の1などが含まれます。数値の変数への組み合わせの1-1のマッピングを生成する方法
それぞれのバスケットに固有のBasketIdを生成したいとします。上記の例では、 "product1_0 product2_3 ..."のような長い文字列になるという明白なIdを行うのではなく、ストレージ効率のために数値Idを使用したいと考えています。
9つの製品があり、それぞれ10回発生する可能性があるため、10^9の組み合わせが可能です。だから私はまた
get_product_counts <- function(get_basketId){
# given a basketId, return the count of each product
}
任意の提案をどのようにこれを行うには可逆で
get_basketId <- function(p1, p2, p3, p4, p5, p6, p7, p8, p9){
# given the count of each product, return a unique numeric id
}
のようなマッピングを作成することができるはずですか?
Cantor Pairingも理論的解決策の1つですが、残念なことにCantor Pairingの結果、オーバーフローするIDが不必要に大きくなります。
9桁の10進数を使用してください。 –
@MatthewLundberg素晴らしい解決策。私はもう少し一般化可能なものを望んでいましたが、私の制約から、あなたのソリューションは素晴らしいものになるでしょう。 – Ben
制約がなければ、一般的な解決策はありません。 –