Я читал вопрос, размещенный здесь: алгоритм Судоку в С#
И одно из решений было написано в этом фрагменте кода.
public static bool IsValid(int[] values) {
int flag = 0;
foreach (int value in values) {
if (value != 0) {
int bit = 1 << value;
if ((flag & bit) != 0) return false;
flag |= bit;
}
}
return true;
}
Идея состоит в том, что она обнаружит дубликаты в массиве значений; но я ошеломлен тем, насколько я не знаю. Может кто-то объяснить это мне?
EDIT: Спасибо всем. Столько замечательных ответов, я не знаю, как их выбрать. Теперь это имеет смысл.