У меня есть массив a
из 10 логических значений (или, что эквивалентно, двоичное представление числа <1024).Я хочу сравнить этот массив с большим набором массивов <code>b[i] логических значений одинакового размера следующим образом: функция compare(a,b[i])
должна вернуть true
, если элементы массива a
никогда не равны true
когда элемент в той же позиции в b[i]
равен false
.
Как пример в java
boolean compare(boolean a1, boolean a2){
for (int j = 0; j<10; j++)
if (a1[j] && !a2[j])
return false;
return true;
}
Есть ли лучшая реализация этой функции?Если рассматривать соответствующее двоичное число как коэффициенты простого разложения целого числа A1 (и A2), эквивалентная функция будет иметь вид
boolean compare (int A1, int A2){
if (gcd(A1,A2)==A1)
return true;
else
return false;
}
с, например, (http://www.java -tips.org/java-se-tips/java.lang/finding-greatest-common-divisor-recursively.html)
int gcd(int a, int b) {
if (b==0)
return a;
else
return gcd(b, a % b);
}
но я не думаю, что это более эффективно (но я могу ошибаться).
У кого-нибудь есть идея?Все предложения приветствуются!
РЕДАКТИРОВАТЬ: я вернусь с некоторым профилированием позже ... Спасибо за все ваши предложения!