Ich habe einen Satz von fünf booleschen Werten. Wenn mehr als eine davon wahr ist, möchte ich eine bestimmte Funktion ausführen. Was ist die eleganteste Art, wie Sie sich das vorstellen können, um diese Bedingung in einer einzigen if () - Anweisung zu überprüfen? Die Zielsprache ist C #, aber ich bin auch an Lösungen in anderen Sprachen interessiert (solange es sich nicht um bestimmte integrierte Funktionen handelt).
Eine interessante Option besteht darin, die Booleschen Werte in einem Byte zu speichern, eine Rechtsverschiebung durchzuführen und mit dem ursprünglichen Byte zu vergleichen. So etwas wie if(myByte && (myByte >> 1))
Aber dies würde die Konvertierung der separaten Booleschen Werte in ein Byte erfordern (über ein BitArray?) Und das scheint ein bisschen (Wortspiel beabsichtigt) ungeschickt zu sein ... [Bearbeiten] Entschuldigung, das hätte sein sollen if(myByte & (myByte - 1))
[/ Bearbeiten]
Hinweis: Dies kommt natürlich dem klassischen Programmierproblem "Bevölkerungszahl", "Seitwärtsaddition" oder "Hamming-Gewicht" sehr nahe - ist aber nicht ganz dasselbe. Ich muss nicht wissen, wie viele der Bits gesetzt sind, nur wenn es mehr als eins sind. Ich hoffe, dass es einen viel einfacheren Weg gibt, dies zu erreichen.