У мене є набір з п’яти булевих значень. Якщо кілька з них відповідають дійсності, я хочу виконати певну функцію. Який найелегантніший спосіб ви можете придумати, що дозволить мені перевірити цю умову в одному твердженні if ()? Мовою перекладу є C #, але мене цікавлять рішення і іншими мовами (якщо ми не говоримо про конкретні вбудовані функції).
Цікавий варіант - зберегти логічні значення в байті, зробити правильний зсув і порівняти з вихідним байтом. Щось на кшталт if(myByte && (myByte >> 1))
Але для цього потрібно буде перетворити окремі булеві значення в байт (за допомогою bitArray?), І це здається трохи (призначеним каламбуром) незграбним ... [редагувати] Вибачте, це мало бути if(myByte & (myByte - 1))
[/ редагувати]
Примітка: Це, звичайно, дуже близько до класичної проблеми програмування "підрахунок населення", "додавання вбік" або "вага Хеммінга" - але не зовсім однакове. Мені не потрібно знати, скільки бітів встановлено, лише якщо їх більше одного. Я сподіваюся, що для цього є набагато простіший спосіб.