私は40枚のカードのデッキゲーム用のシミュレーターを構築しています。デッキは4つのシードに分割され、それぞれに10枚のカードがあります。他のシード(たとえば、ハート)とは異なるシードが1つしかないため、同じ値の4枚のカードのセットを3ビットで格納する非常に便利な方法を考えました。最初の2つは、与えられた値が残り、最後の値はその値のハートカードがまだデッキにあるかどうかを示すマーカーです。それで、
{7h 7c 7s} = 101
これにより、デッキ全体を40ビットではなく30ビットのメモリに格納できます。Cでプログラミングしているときは、4文字(各1バイト= 32ビット)を割り当て、ビット演算で値を操作していました。 。C#ではそれができません。文字はそれぞれ2バイトであり、ビットで遊ぶのは非常に面倒なので、問題は、必要なデータを格納するために使用する必要のあるメモリの最小量はどれくらいかということです。
PS:システムのメモリにこれらのデッキを100k以上割り当てる必要があるかもしれないので、10ビットを節約するのはかなり大変だということを覚えておいてください。