Making Logic Gates From Discrete Components