Юлия: вычислите внутренний продукт, используя булеву алгебру - PullRequest
0 голосов
/ 18 мая 2018

У меня есть два логических вектора a = [1,1,1] и b = [0,1,1], где, очевидно, 1 означает true и 0 для false.

Я хочу рассчитать их внутренний продукт, используяБулева алгебраПоэтому я хочу получить результат

1*0 + 1*1 + 1*1 = 0 + 1 + 1 = 0

, потому что сложение играет роль исключительного или (XOR).

Я знаю, что часть продукта может быть выполнена следующим образом

a = [true, true, true] # could also use ones(Bool, 3)
b = [false, true, true]

bitwise_prod = a & b

но я не знаю, как сделать сумму.Есть идеи?

1 Ответ

0 голосов
/ 18 мая 2018

Я действительно нашел хороший способ сейчас.Прежде всего, мне не нужно использовать логические переменные

a = [1, 1, 1]  # or ones(Int, 3)
b = [0, 1, 1]

. Затем я могу использовать reduce с функцией xor.

reduce(xor, a & b)

Обратите внимание, что я пытался использоватьпобитовый оператор xor $, который найден в документации (внутри анонимной функции), но этот оператор устарел, и Юлия 0.6.2 предлагает вместо него функцию xor.Я думаю, что имя функции делает ее очень аккуратной.

...