From 25aa6606eb33f56441d7698f9a85c0eb8b6c51ec Mon Sep 17 00:00:00 2001 From: ahmadharbi0x1337 Date: Mon, 21 Jul 2025 14:36:03 -0700 Subject: [PATCH] feat: Add recursive implication function for lists --- boolean_algebra/imply_gate.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/boolean_algebra/imply_gate.py b/boolean_algebra/imply_gate.py index b64ebaceb306..733154b3bf3c 100644 --- a/boolean_algebra/imply_gate.py +++ b/boolean_algebra/imply_gate.py @@ -33,6 +33,32 @@ def imply_gate(input_1: int, input_2: int) -> int: return int(input_1 == 0 or input_2 == 1) +def recursive_imply_list(input_list: list[int]) -> int: + """ + Recursively calculates the implication of a list. + Strictly The Implication is Applied Consecuteivly left to right: + ( (a -> b) -> c ) -> d ... + + >>> recursive_imply_list([]) + 1 + >>> recursive_imply_list([0]) + 0 + >>> recursive_imply_list([1]) + 1 + >>> recursive_imply_list([1, 0, 1]) + 1 + >>> recursive_imply_list([1, 1, 0]) + 0 + """ + if not input_list: + return 1 + if len(input_list) == 1: + return input_list[0] + first_implication = imply_gate(input_list[0], input_list[1]) + new_list = [first_implication, *input_list[2:]] + return recursive_imply_list(new_list) + + if __name__ == "__main__": import doctest