mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-24 13:31:07 +00:00
5019561681
* Create multiplexer.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Doctests should show how the algorithm fails --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Christian Clauss <cclauss@me.com>
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
def mux(input0: int, input1: int, select: int) -> int:
|
|
"""
|
|
Implement a 2-to-1 Multiplexer.
|
|
|
|
:param input0: The first input value (0 or 1).
|
|
:param input1: The second input value (0 or 1).
|
|
:param select: The select signal (0 or 1) to choose between input0 and input1.
|
|
:return: The output based on the select signal. input1 if select else input0.
|
|
|
|
https://www.electrically4u.com/solved-problems-on-multiplexer
|
|
https://en.wikipedia.org/wiki/Multiplexer
|
|
|
|
>>> mux(0, 1, 0)
|
|
0
|
|
>>> mux(0, 1, 1)
|
|
1
|
|
>>> mux(1, 0, 0)
|
|
1
|
|
>>> mux(1, 0, 1)
|
|
0
|
|
>>> mux(2, 1, 0)
|
|
Traceback (most recent call last):
|
|
...
|
|
ValueError: Inputs and select signal must be 0 or 1
|
|
>>> mux(0, -1, 0)
|
|
Traceback (most recent call last):
|
|
...
|
|
ValueError: Inputs and select signal must be 0 or 1
|
|
>>> mux(0, 1, 1.1)
|
|
Traceback (most recent call last):
|
|
...
|
|
ValueError: Inputs and select signal must be 0 or 1
|
|
"""
|
|
if all(i in (0, 1) for i in (input0, input1, select)):
|
|
return input1 if select else input0
|
|
raise ValueError("Inputs and select signal must be 0 or 1")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import doctest
|
|
|
|
doctest.testmod()
|