0

このデータをカプセル化するオブジェクトのハッシュを (符号なし 32 ビット整数として) 作成する必要があります。

Entry {
    uint8 r;
    uint8 g;
    uint8 b;
    bool empty;
    uint8 count;
}

インスタンスが等しい場合を除き、ハッシュはすべてのインスタンスで一意である必要があります。2 つのインスタンスが等しいのは、次の場合のみです。

  • count は両方のインスタンスで等しい

  • r、g、bが等しいか、両方のインスタンスで空が設定されています

ハッシュはハッシュマップやその他のコンテナーで使用されるため、非常に頻繁に呼び出される可能性があります。ハッシュ生成は高速である必要があります。

私は CCCERRRGGGBBB について考えました。

  • CCC/RRR/GGG/BBB: 3 桁で count/r/g/b
  • E: 空が設定されている場合は 1、そうでない場合は 0

しかし、その数は範囲をはるかに超えています。

何かご意見は?

4

1 に答える 1