Skip to content
27 changes: 27 additions & 0 deletions boolean_algebra/nand_gate.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,33 @@ def nand_gate(input_1: int, input_2: int) -> int:
return int(not (input_1 and input_2))


def n_input_nand_gate(inputs: list[int]) -> int:
Comment thread
TTAAAN marked this conversation as resolved.
"""
Calculate NAND of a list of input values
>>> n_input_nand_gate([1, 0, 1, 1, 0])
1
>>> n_input_nand_gate([1, 1, 1, 1, 1])
0
>>> n_input_nand_gate([0, 0, 0, 0, 0])
1
>>> n_input_nand_gate([1, 0, 0, 0, 0])
1

>>> n_input_nand_gate([1, 1])
0

>>> n_input_nand_gate([1])
Traceback (most recent call last):
...
ValueError: Input list must contain at least two elements
"""

if len(inputs) < 2:
Comment thread
TTAAAN marked this conversation as resolved.
raise ValueError("Input list must contain at least two elements")

return int(not all(inputs))
Comment thread
TTAAAN marked this conversation as resolved.


if __name__ == "__main__":
import doctest

Expand Down