-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathboolean_algebra.py
More file actions
45 lines (41 loc) · 3.23 KB
/
boolean_algebra.py
File metadata and controls
45 lines (41 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
"""
В матаматике и математической логике, Булева алгебра это подраздел алгебры в
котором значения переменных истинны или ложны и обычно обозначенны 0 или 1
соответственно. В отличии от простой алгебры где значение переменных это числа
и основные операции это сложение и умножение, основные операции Булевой
алегбры это конъюнкция (обозначенная ∧), дизъюнкция (обозначенная ∨) и
отрицание (обозначенное ¬).
В этой миссии вам нужно реализовать несколько булевых операций:
- "конъюнкция" ("conjunction") обозначенная x ∧ y, удовлетворяющая условиям
x ∧ y = 1 если x = y = 1 и ∧ y = 0 иначе.
- "дизъюнкция" ("disjunction") обозначенная x ∨ y, удовлетворяющая условиям
x ∨ y = 0 если x = y = 0 и x ∨ y = 1 иначе.
- "импликация" ("implication") (прямая импликация) обозначенная x→y и
описанная как ¬ x ∨ y. Если x это истина, тогда значение x → y берется
такое как у y. Но если x ложь, тогда значение y может быть игнорированно.
- "исключение" ("exclusive") (исключающее ИЛИ) обозначенное x ⊕ y и описанное
как (x ∨ y)∧ ¬ (x ∧ y). Это исключает вероятность обоих x и y. В терминах
арифметики, это сложение по модулю 2, где 1 + 1 = 0.
- "эквивалентность" ("equivalence") обозначенная x ≡ y и описанная
как ¬ (x ⊕ y). Это истина, когда x и y имеют одинаковые значения.
Здесь вы можете увидеть таблицу истинности для данных операций:
x | y | x∧y | x∨y | x→y | x⊕y | x≡y |
--------------------------------------
0 | 0 | 0 | 0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 | 1 | 0 |
0 | 1 | 0 | 1 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 1 | 0 | 1 |
--------------------------------------
Даны два булевых значения x и y как 1 или 0 и дано имя операции, как
описано ранее. Вы должны вычислить значение и вернуть его как 1 или 0.
Входные значения: Три аргумента. X и Y как 0 или 1. Имя операции, как строка.
Выходное значение: Результат как 1 или 0.
"""
def boolean(x, y, operation):
return {
'conjunction': lambda: x & y,
'disjunction': lambda: x | y,
'implication': lambda: not(x) or y,
'exclusive': lambda: x ^ y,
'equivalence': lambda: x == y
}[operation]()