using System;
using System.Collections.Generic;
public class Test
{
static void Main()
{
int[] ints1 = { 1, 1, 2 };
int hash1 = GetHashCode(ints1);
int[] ints2 = { 2 };
int hash2 = GetHashCode(ints2);
Console.WriteLine("hash1 == {0}", hash1);
Console.WriteLine("hash2 == {0}", hash2);
}
static int GetHashCode(IEnumerable<int> integers)
{
int hash = 0;
foreach(int integer in integers)
{
int x = integer;
x ^= x >> 17;
x *= 830770091; // 0xed5ad4bb
x ^= x >> 11;
x *= -1404298415; // 0xac4c1b51
x ^= x >> 15;
x *= 830770091; // 0x31848bab
x ^= x >> 14;
hash += x;
}
return hash;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKICAgIHN0YXRpYyB2b2lkIE1haW4oKQogICAgewogICAgICAgIGludFtdIGludHMxID0geyAxLCAxLCAyIH07CiAgICAgICAgaW50IGhhc2gxID0gR2V0SGFzaENvZGUoaW50czEpOwogICAgICAgIGludFtdIGludHMyID0geyAyIH07CiAgICAgICAgaW50IGhhc2gyID0gR2V0SGFzaENvZGUoaW50czIpOwoKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiaGFzaDEgPT0gezB9IiwgaGFzaDEpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJoYXNoMiA9PSB7MH0iLCBoYXNoMik7CiAgICB9CgogICAgc3RhdGljIGludCBHZXRIYXNoQ29kZShJRW51bWVyYWJsZTxpbnQ+IGludGVnZXJzKQogICAgewogICAgICAgIGludCBoYXNoID0gMDsKCiAgICAgICAgZm9yZWFjaChpbnQgaW50ZWdlciBpbiBpbnRlZ2VycykKICAgICAgICB7CiAgICAgICAgICAgIGludCB4ID0gaW50ZWdlcjsKCiAgICAgICAgICAgIHggXj0geCA+PiAxNzsKICAgICAgICAgICAgeCAqPSA4MzA3NzAwOTE7ICAgLy8gMHhlZDVhZDRiYgogICAgICAgICAgICB4IF49IHggPj4gMTE7CiAgICAgICAgICAgIHggKj0gLTE0MDQyOTg0MTU7IC8vIDB4YWM0YzFiNTEKICAgICAgICAgICAgeCBePSB4ID4+IDE1OwogICAgICAgICAgICB4ICo9IDgzMDc3MDA5MTsgICAvLyAweDMxODQ4YmFiCiAgICAgICAgICAgIHggXj0geCA+PiAxNDsKCiAgICAgICAgICAgIGhhc2ggKz0geDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBoYXNoOwogICAgfQp9Cg==