打开位计数器

Yak*_*kov 2 language-agnostic algorithm counter black-box bit

假设我有一个带有3个输入(每个输入为1位)和2位输出的黑盒子.黑盒子计算打开输入位的数量.使用这样的黑盒子,需要在输入中实现具有7位的开启位的计数器.实现应该使用尽可能少的黑盒子.

//这是一份求职面试的问题

bea*_*ker 6

你正在制作一个二进制加法器.试试这个...
输入两个黑盒子,剩下一个输入:

 7 6 5      4 3 2      1
 | | |      | | |      | 
-------    -------     |
|     |    |     |     |
| H L |    | H L |     |
-------    -------     |
  | |        | |       |
Run Code Online (Sandbox Code Playgroud)

取两个低输出和剩余输入(1)并将它们送到另一个黑盒子:

            L L 1
            | | |
           -------
           |     |
           | C L |
           -------
             | |
Run Code Online (Sandbox Code Playgroud)

这个黑盒子的低输出将是结果的低位.高输出是进位.将此进位与前两个黑盒中的高位一起送入第四个黑盒:

 H H C   L
 | | |   |
-------  |
|     |  |
| H M |  |
-------  |
  | |    |
Run Code Online (Sandbox Code Playgroud)

结果应该是输入中的"on"位数,以高位,中位和低位表示为二进制.