mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-30 16:31:08 +00:00
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()
|