public PegsHash( PegsBoardType type, boolean[][] board )
	{
		hashes = new int[(type.places.length >> 5) + 1];
		
		int hashIndex = 0;
		int k = 0;
		
		for (PegsPoint p : type.places)
		{
			hashes[hashIndex] |= (board[p.y][p.x] ? 1 : 0) << k;
			
			if (++k == 32)
			{
				k = 0;
				hashIndex++;
			}
		}

		hash = hashes[0];
		
		for (int i = 1; i < hashes.length; i++)
		{
			hash ^= hashes[i];
		}
	}