Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 3422c6b

Browse files
ahmadharbi0x1337MaximSmolskiypre-commit-ci[bot]
authored andcommitted
feat: Add recursive implication function for lists (TheAlgorithms#12855)
* feat: Add recursive implication function for lists * Update imply_gate.py * Update imply_gate.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: Maxim Smolskiy <mithridatus@mail.ru> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 264ebf0 commit 3422c6b

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

‎boolean_algebra/imply_gate.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,58 @@ def imply_gate(input_1: int, input_2: int) -> int:
3333
return int(input_1 == 0 or input_2 == 1)
3434

3535

36+
def recursive_imply_list(input_list: list[int]) -> int:
37+
"""
38+
Recursively calculates the implication of a list.
39+
Strictly the implication is applied consecutively left to right:
40+
( (a -> b) -> c ) -> d ...
41+
42+
>>> recursive_imply_list([])
43+
Traceback (most recent call last):
44+
...
45+
ValueError: Input list must contain at least two elements
46+
>>> recursive_imply_list([0])
47+
Traceback (most recent call last):
48+
...
49+
ValueError: Input list must contain at least two elements
50+
>>> recursive_imply_list([1])
51+
Traceback (most recent call last):
52+
...
53+
ValueError: Input list must contain at least two elements
54+
>>> recursive_imply_list([0, 0])
55+
1
56+
>>> recursive_imply_list([0, 1])
57+
1
58+
>>> recursive_imply_list([1, 0])
59+
0
60+
>>> recursive_imply_list([1, 1])
61+
1
62+
>>> recursive_imply_list([0, 0, 0])
63+
0
64+
>>> recursive_imply_list([0, 0, 1])
65+
1
66+
>>> recursive_imply_list([0, 1, 0])
67+
0
68+
>>> recursive_imply_list([0, 1, 1])
69+
1
70+
>>> recursive_imply_list([1, 0, 0])
71+
1
72+
>>> recursive_imply_list([1, 0, 1])
73+
1
74+
>>> recursive_imply_list([1, 1, 0])
75+
0
76+
>>> recursive_imply_list([1, 1, 1])
77+
1
78+
"""
79+
if len(input_list) < 2:
80+
raise ValueError("Input list must contain at least two elements")
81+
first_implication = imply_gate(input_list[0], input_list[1])
82+
if len(input_list) == 2:
83+
return first_implication
84+
new_list = [first_implication, *input_list[2:]]
85+
return recursive_imply_list(new_list)
86+
87+
3688
if __name__ == "__main__":
3789
import doctest
3890

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /