В алгебре логики различают три вида логических операций:
Конъюкция - это логическое умножение, обозначается &, ^, И
Дизъюнкция - это логическое сложение, обозначается ∨, I, ИЛИ, +
Инверсия - это логическое отрицание(т.е., если у нас 0, то с инверсии у нас получится 1), обозначаем ее как HE, ¬, -
Логические операции имеют свой порядок: сначала инверсия, потом конъюкция, потом дизъюнкция.
Давай подсчитаем количество переменных в логическом выражении: это A, B, C, т.е., 3 переменные. Подсчитаем количество действий в этом выражении: 5 действий.
Сложим кол-во действий и кол-во переменных и получим количество столбцов в таблице.
3 + 5 = 8 столбцов.
Теперь определим количество строк в таблице. Для этого воспользуемся формулой m = 2^n.
m = 2^3 = 8 строк в таблице, не считая шапки таблицы.
Чертим таблицу:
A B C A ^ B B ^ C A ^ C A^B∨B B^C∨A
0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 1 0 0 0 0 1 0
1 0 0 0 0 0 0 1
1 1 0 1 0 0 1 1
1 0 1 0 0 1 0 1
0 1 1 0 1 0 1 1
1 1 1 1 1 1 1 1
Расставим порядок действий: первым действием у нас будет A ^ B, так как конъюкция первее дизъюнкции.
Вторым действием будет B ^ C по выше сказанной причине.
Третьим действием будет A ^ C
Четвертым действием A ^ B ∨ B
Пятым действием будет B ^ C ∨ A
В таблице будет только две цифры - 0 и 1. В первых трех действиях конъюкция(лог.умножение), т.е. мы будем умножать 0 и 1. В последних двух действиях - конъюкция с дизъюнкцией, т.е. сначала будем умножать B на C и прибавлять к A. (Если алгебру знаешь - справишься).
Задача решена.
P.S Если у всех троих переменных 0 - то во всех логических действиях у них будет результат, равный нулю. Тоже самое и с ситуацией, когда все три переменные равны 1.
class Node:
def __init__(self, val):
self.l = None
self.r = None
self.v = val
class Tree:
def __init__(self):
self.root = None
def getRoot(self):
return self.root
def add(self, val):
if self.root is None:
self.root = Node(val)
else:
self._add(val, self.root)
def _add(self, val, node):
if val < node.v:
if node.l is not None:
self._add(val, node.l)
else:
node.l = Node(val)
else:
if node.r is not None:
self._add(val, node.r)
else:
node.r = Node(val)
def find(self, val):
if self.root is not None:
return self._find(val, self.root)
else:
return None
def _find(self, val, node):
if val == node.v:
return node
elif (val < node.v and node.l is not None):
return self._find(val, node.l)
elif (val > node.v and node.r is not None):
return self._find(val, node.r)
def deleteTree(self):
# garbage collector will do this for us.
self.root = None
def printTree(self):
if self.root is not None:
self._printTree(self.root)
def _printTree(self, node):
if node is not None:
self._printTree(node.l)
print(str(node.v) + ' ')
self._printTree(node.r)
# 3
# 0 4
# 2 8
tree = Tree()
tree.add(3)
tree.add(4)
tree.add(0)
tree.add(8)
tree.add(2)
tree.printTree()
print(tree.find(3).v)
print(tree.find(10))
tree.deleteTree()
tree.printTree()
Объяснение:
Объяснение:
A ^ B ∨ B ^ C ∨ A ^ C
В алгебре логики различают три вида логических операций:
Конъюкция - это логическое умножение, обозначается &, ^, И
Дизъюнкция - это логическое сложение, обозначается ∨, I, ИЛИ, +
Инверсия - это логическое отрицание(т.е., если у нас 0, то с инверсии у нас получится 1), обозначаем ее как HE, ¬, -
Логические операции имеют свой порядок: сначала инверсия, потом конъюкция, потом дизъюнкция.
Давай подсчитаем количество переменных в логическом выражении: это A, B, C, т.е., 3 переменные. Подсчитаем количество действий в этом выражении: 5 действий.
Сложим кол-во действий и кол-во переменных и получим количество столбцов в таблице.
3 + 5 = 8 столбцов.
Теперь определим количество строк в таблице. Для этого воспользуемся формулой m = 2^n.
m = 2^3 = 8 строк в таблице, не считая шапки таблицы.
Чертим таблицу:
A B C A ^ B B ^ C A ^ C A^B∨B B^C∨A
0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 1 0 0 0 0 1 0
1 0 0 0 0 0 0 1
1 1 0 1 0 0 1 1
1 0 1 0 0 1 0 1
0 1 1 0 1 0 1 1
1 1 1 1 1 1 1 1
Расставим порядок действий: первым действием у нас будет A ^ B, так как конъюкция первее дизъюнкции.
Вторым действием будет B ^ C по выше сказанной причине.
Третьим действием будет A ^ C
Четвертым действием A ^ B ∨ B
Пятым действием будет B ^ C ∨ A
В таблице будет только две цифры - 0 и 1. В первых трех действиях конъюкция(лог.умножение), т.е. мы будем умножать 0 и 1. В последних двух действиях - конъюкция с дизъюнкцией, т.е. сначала будем умножать B на C и прибавлять к A. (Если алгебру знаешь - справишься).
Задача решена.
P.S Если у всех троих переменных 0 - то во всех логических действиях у них будет результат, равный нулю. Тоже самое и с ситуацией, когда все три переменные равны 1.