using System.Collections.Generic;
namespace Boggle
{
///
/// Equality comparer used for HashSet. Used to compare two words in the hash set and detect collisions.
/// This is needed because we are making HashSet with a custom type and .NET will use expensive
/// procedure to determine a unique hash (by treating it as an Object instance) if this is not provided.
///
public class WordComparer : EqualityComparer
{
public override bool Equals(WordOnBoard x, WordOnBoard y)
{
return string.Compare(x.Word, y.Word, true) == 0;
}
public override int GetHashCode(WordOnBoard obj)
{
int hash = 0;
for (int i = 0; i < obj.Word.Length; i++)
{
hash += (int)obj.Word[i] * 10 ^ (obj.Word.Length - 1 - i);
//cat would result in 99 * 10^2 + 97 * 10^1 + 116 * 10^0 = 10986
}
return hash;
}
}
}