From 9eef5eea75d3516447f647f0f9d7cccd589498ae Mon Sep 17 00:00:00 2001 From: Parth Date: Wed, 10 Jun 2026 01:42:21 +0530 Subject: [PATCH 1/6] action plan --- boolean_algebra/karnaugh_map_simplification.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/boolean_algebra/karnaugh_map_simplification.py b/boolean_algebra/karnaugh_map_simplification.py index c7f2d4c6b897..dcae69433971 100644 --- a/boolean_algebra/karnaugh_map_simplification.py +++ b/boolean_algebra/karnaugh_map_simplification.py @@ -3,6 +3,12 @@ https://www.allaboutcircuits.com/technical-articles/karnaugh-map-boolean-algebraic-simplification-technique """ +# Changes I can make - +# 1. Make a function for three and four variable kmap +# 2. Make truly simplified expressions + +# Approach - Either store every possible box and brute force or make general expression and then simplify + def simplify_kmap(kmap: list[list[int]]) -> str: """ From d28af5caf131a270de538dc9f973ba3f7a3784f8 Mon Sep 17 00:00:00 2001 From: Parth Date: Wed, 10 Jun 2026 19:12:58 +0530 Subject: [PATCH 2/6] changed kmap function --- .../karnaugh_map_simplification.py | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/boolean_algebra/karnaugh_map_simplification.py b/boolean_algebra/karnaugh_map_simplification.py index dcae69433971..e167b95f60ff 100644 --- a/boolean_algebra/karnaugh_map_simplification.py +++ b/boolean_algebra/karnaugh_map_simplification.py @@ -10,6 +10,7 @@ # Approach - Either store every possible box and brute force or make general expression and then simplify + def simplify_kmap(kmap: list[list[int]]) -> str: """ Simplify the Karnaugh map. @@ -27,13 +28,21 @@ def simplify_kmap(kmap: list[list[int]]) -> str: "A'B + AB' + AB" """ simplified_f = [] - for a, row in enumerate(kmap): - for b, item in enumerate(row): - if item: - term = ("A" if a else "A'") + ("B" if b else "B'") - simplified_f.append(term) - return " + ".join(simplified_f) + # 4 sized boxes - There is only 1 + if kmap[0][0] + kmap[0][1] + kmap[1][0] + kmap[1][1] == 4: + return "1" + # 2 sized boxes - There are 4 (2 vertical and 2 horizontal) + # check horizontal + for i in range(2): + if kmap[i][0] + kmap[i][1] == 2: + simplified_f.append(("A" if i else "A'")) + # check vertical + for i in range(2): + if kmap[0][i] + kmap[1][i] == 2: + simplified_f.append(("B" if i else "B'")) + + return " + ".join(simplified_f) def main() -> None: """ @@ -43,7 +52,7 @@ def main() -> None: [0, 1] [1, 1] Simplified Expression: - A'B + AB' + AB + A + B """ kmap = [[0, 1], [1, 1]] From 108761d9611deeda09e1fd86cb6cca1a23e5c5ce Mon Sep 17 00:00:00 2001 From: Parth Date: Wed, 10 Jun 2026 20:20:50 +0530 Subject: [PATCH 3/6] changed docstrings --- .../karnaugh_map_simplification.py | 45 +++++++++++-------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/boolean_algebra/karnaugh_map_simplification.py b/boolean_algebra/karnaugh_map_simplification.py index e167b95f60ff..a52e4496dfc3 100644 --- a/boolean_algebra/karnaugh_map_simplification.py +++ b/boolean_algebra/karnaugh_map_simplification.py @@ -3,47 +3,54 @@ https://www.allaboutcircuits.com/technical-articles/karnaugh-map-boolean-algebraic-simplification-technique """ -# Changes I can make - -# 1. Make a function for three and four variable kmap -# 2. Make truly simplified expressions -# Approach - Either store every possible box and brute force or make general expression and then simplify +def simplify_kmap(kmap: list[list[int]]) -> str: + """ + Simplify a 2 variable Karnaugh map. + Args: + kmap (List[List[]]): The kmap as a 2D array + + Returns: + str: The most simplified expression of the kmap -def simplify_kmap(kmap: list[list[int]]) -> str: - """ - Simplify the Karnaugh map. >>> simplify_kmap(kmap=[[0, 1], [1, 1]]) - "A'B + AB' + AB" + "A + B" >>> simplify_kmap(kmap=[[0, 0], [0, 0]]) - '' + '0' >>> simplify_kmap(kmap=[[0, 1], [1, -1]]) - "A'B + AB' + AB" + 'A + B' >>> simplify_kmap(kmap=[[0, 1], [1, 2]]) - "A'B + AB' + AB" + "A + B" >>> simplify_kmap(kmap=[[0, 1], [1, 1.1]]) - "A'B + AB' + AB" + "A + B" >>> simplify_kmap(kmap=[[0, 1], [1, 'a']]) - "A'B + AB' + AB" + "A + B" """ simplified_f = [] # 4 sized boxes - There is only 1 - if kmap[0][0] + kmap[0][1] + kmap[1][0] + kmap[1][1] == 4: + if kmap[0][0] and kmap[0][1] and kmap[1][0] and kmap[1][1]: return "1" # 2 sized boxes - There are 4 (2 vertical and 2 horizontal) # check horizontal for i in range(2): - if kmap[i][0] + kmap[i][1] == 2: - simplified_f.append(("A" if i else "A'")) + if kmap[i][0] and kmap[i][1]: + simplified_f.append("A" if i else "A'") # check vertical for i in range(2): - if kmap[0][i] + kmap[1][i] == 2: - simplified_f.append(("B" if i else "B'")) - + if kmap[0][i] and kmap[1][i]: + simplified_f.append("B" if i else "B'") + + # 1 sized boxes - There are 4 + + if not (simplified_f): + simplified_f.append("0") + return " + ".join(simplified_f) + def main() -> None: """ Main function to create and simplify a K-Map. From c55ba7e44ab0a81a8ce0854c531f320090c5bea8 Mon Sep 17 00:00:00 2001 From: Parth Date: Wed, 10 Jun 2026 20:34:30 +0530 Subject: [PATCH 4/6] fixed the kmap function for last edge case and added relevant doctests --- .../karnaugh_map_simplification.py | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/boolean_algebra/karnaugh_map_simplification.py b/boolean_algebra/karnaugh_map_simplification.py index a52e4496dfc3..ad3a6d19acd5 100644 --- a/boolean_algebra/karnaugh_map_simplification.py +++ b/boolean_algebra/karnaugh_map_simplification.py @@ -14,19 +14,18 @@ def simplify_kmap(kmap: list[list[int]]) -> str: Returns: str: The most simplified expression of the kmap - + >>> simplify_kmap(kmap = [[1,1], [1,1]]) + "1" >>> simplify_kmap(kmap=[[0, 1], [1, 1]]) "A + B" - >>> simplify_kmap(kmap=[[0, 0], [0, 0]]) - '0' - >>> simplify_kmap(kmap=[[0, 1], [1, -1]]) - 'A + B' >>> simplify_kmap(kmap=[[0, 1], [1, 2]]) "A + B" - >>> simplify_kmap(kmap=[[0, 1], [1, 1.1]]) - "A + B" - >>> simplify_kmap(kmap=[[0, 1], [1, 'a']]) - "A + B" + >>> simplify_kmap(kmap=[[0, 0], [0, 0]]) + '0' + >>> simplify_kmap(kmap=[[0, 1], [1, 0]]) + "A'B + AB'" + >>> simplify_kmap(kmap=[[0, 1], [0, 0]]) + "A'B" """ simplified_f = [] # 4 sized boxes - There is only 1 @@ -44,6 +43,12 @@ def simplify_kmap(kmap: list[list[int]]) -> str: simplified_f.append("B" if i else "B'") # 1 sized boxes - There are 4 + if not (simplified_f): + for a, row in enumerate(kmap): + for b, item in enumerate(row): + if item: + term = ("A" if a else "A'") + ("B" if b else "B'") + simplified_f.append(term) if not (simplified_f): simplified_f.append("0") @@ -61,7 +66,7 @@ def main() -> None: Simplified Expression: A + B """ - kmap = [[0, 1], [1, 1]] + kmap = [[0, 1], [0, 0]] # Manually generate the product of [0, 1] and [0, 1] @@ -74,4 +79,4 @@ def main() -> None: if __name__ == "__main__": main() - print(f"{simplify_kmap(kmap=[[0, 1], [1, 1]]) = }") + print(f"{simplify_kmap(kmap=[[1, 1], [1, 1]]) = }") From 32657b731470974f41905f9835805e9475b5e86b Mon Sep 17 00:00:00 2001 From: Parth Date: Wed, 10 Jun 2026 20:38:50 +0530 Subject: [PATCH 5/6] changed comments --- boolean_algebra/karnaugh_map_simplification.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boolean_algebra/karnaugh_map_simplification.py b/boolean_algebra/karnaugh_map_simplification.py index ad3a6d19acd5..9b4b30c83ba0 100644 --- a/boolean_algebra/karnaugh_map_simplification.py +++ b/boolean_algebra/karnaugh_map_simplification.py @@ -42,7 +42,7 @@ def simplify_kmap(kmap: list[list[int]]) -> str: if kmap[0][i] and kmap[1][i]: simplified_f.append("B" if i else "B'") - # 1 sized boxes - There are 4 + # 1 sized boxes - There are 4 (check individual boxes) if not (simplified_f): for a, row in enumerate(kmap): for b, item in enumerate(row): From ddbccbe9f9b51f0e095233e04c6ccbead8f9515a Mon Sep 17 00:00:00 2001 From: Parth Date: Wed, 10 Jun 2026 20:57:01 +0530 Subject: [PATCH 6/6] bug fixes, code now passes all doctests --- boolean_algebra/karnaugh_map_simplification.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/boolean_algebra/karnaugh_map_simplification.py b/boolean_algebra/karnaugh_map_simplification.py index 9b4b30c83ba0..3a42144f97dd 100644 --- a/boolean_algebra/karnaugh_map_simplification.py +++ b/boolean_algebra/karnaugh_map_simplification.py @@ -15,11 +15,11 @@ def simplify_kmap(kmap: list[list[int]]) -> str: str: The most simplified expression of the kmap >>> simplify_kmap(kmap = [[1,1], [1,1]]) - "1" + '1' >>> simplify_kmap(kmap=[[0, 1], [1, 1]]) - "A + B" + 'A + B' >>> simplify_kmap(kmap=[[0, 1], [1, 2]]) - "A + B" + 'A + B' >>> simplify_kmap(kmap=[[0, 0], [0, 0]]) '0' >>> simplify_kmap(kmap=[[0, 1], [1, 0]]) @@ -66,7 +66,7 @@ def main() -> None: Simplified Expression: A + B """ - kmap = [[0, 1], [0, 0]] + kmap = [[0, 1], [1, 1]] # Manually generate the product of [0, 1] and [0, 1]