J'ai un ensemble de cinq valeurs booléennes. Si plus d'une de ces valeurs sont vraies, je veux exécuter une fonction particulière. Quel est le moyen le plus élégant auquel vous pensez pour me permettre de vérifier cette condition dans une seule instruction if() ? Le langage cible est le C# mais je suis également intéressé par des solutions dans d'autres langages (tant qu'il ne s'agit pas de fonctions intégrées spécifiques).
Une option intéressante consiste à stocker les booléens dans un octet, à effectuer un décalage vers la droite et à comparer avec l'octet d'origine. Quelque chose comme if(myByte && (myByte >> 1))
Mais cela nécessiterait de convertir les booléens séparés en octet (via un bitArray ?) et cela semble un peu (jeu de mots) maladroit... [edit]Sorry, that should have been if(myByte & (myByte - 1))
[/edit]
Note : Ceci est bien sûr très proche du problème de programmation classique de "comptage de population", "addition latérale" ou "poids de Hamming" - mais pas tout à fait le même. Je n'ai pas besoin de savoir combien de bits sont activés, seulement si c'est plus d'un. J'espère qu'il existe un moyen beaucoup plus simple d'accomplir cette tâche.