mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-23 21:11:08 +00:00
Create karnaugh_map_simplification.py (#11056)
* Create karnaugh_map_simplification.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update karnaugh_map_simplification.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update karnaugh_map_simplification.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update karnaugh_map_simplification.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update karnaugh_map_simplification.py * Update boolean_algebra/karnaugh_map_simplification.py Co-authored-by: Christian Clauss <cclauss@me.com> * Update karnaugh_map_simplification.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update karnaugh_map_simplification.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update karnaugh_map_simplification.py * Update karnaugh_map_simplification.py --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Christian Clauss <cclauss@me.com>
This commit is contained in:
parent
760d9bedc1
commit
c7a1331b34
55
boolean_algebra/karnaugh_map_simplification.py
Normal file
55
boolean_algebra/karnaugh_map_simplification.py
Normal file
|
@ -0,0 +1,55 @@
|
|||
"""
|
||||
https://en.wikipedia.org/wiki/Karnaugh_map
|
||||
https://www.allaboutcircuits.com/technical-articles/karnaugh-map-boolean-algebraic-simplification-technique
|
||||
"""
|
||||
|
||||
|
||||
def simplify_kmap(kmap: list[list[int]]) -> str:
|
||||
"""
|
||||
Simplify the Karnaugh map.
|
||||
>>> simplify_kmap(kmap=[[0, 1], [1, 1]])
|
||||
"A'B + AB' + AB"
|
||||
>>> simplify_kmap(kmap=[[0, 0], [0, 0]])
|
||||
''
|
||||
>>> simplify_kmap(kmap=[[0, 1], [1, -1]])
|
||||
"A'B + AB' + AB"
|
||||
>>> simplify_kmap(kmap=[[0, 1], [1, 2]])
|
||||
"A'B + AB' + AB"
|
||||
>>> simplify_kmap(kmap=[[0, 1], [1, 1.1]])
|
||||
"A'B + AB' + AB"
|
||||
>>> simplify_kmap(kmap=[[0, 1], [1, 'a']])
|
||||
"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)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
"""
|
||||
Main function to create and simplify a K-Map.
|
||||
|
||||
>>> main()
|
||||
[0, 1]
|
||||
[1, 1]
|
||||
Simplified Expression:
|
||||
A'B + AB' + AB
|
||||
"""
|
||||
kmap = [[0, 1], [1, 1]]
|
||||
|
||||
# Manually generate the product of [0, 1] and [0, 1]
|
||||
|
||||
for row in kmap:
|
||||
print(row)
|
||||
|
||||
print("Simplified Expression:")
|
||||
print(simplify_kmap(kmap))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
print(f"{simplify_kmap(kmap=[[0, 1], [1, 1]]) = }")
|
Loading…
Reference in New Issue
Block a user