使用 ADD、SUB、MULT 和 DIV 将某些值放入框中?

Joh*_*y19 4 algorithm math

今天我面试了一个开发人员的工作,我不得不做这个能力测试......我被两个问题困住了:

box 1  box 2  box 3
 A      B      C
Run Code Online (Sandbox Code Playgroud)

如何将 A 放在只有这 4 个运算符(ADD、SUB、MULT 和 DIV)的每个框中?

box 1  box 2  box 3
Run Code Online (Sandbox Code Playgroud)

您有数字 1,2 和 3 可以在 box1 box2 或 box3 中,但我们不知道哪个是哪个...如何将 7 放入 box3 ?

有人可以解释我该怎么做吗?ps:语法是:ADD,1,2,3 => box3 = box1 + box2

谢谢

tem*_*def 5

对于第一个问题,您只需将 A + A 存储在每个框 B 和 C 中,就可以将它们设置为等于 2A:

ADD 2, 1, 1
ADD 3, 1, 1
Run Code Online (Sandbox Code Playgroud)

现在,只需从每个框中减去 A:

SUB 2, 2, 1
SUB 3, 3, 1
Run Code Online (Sandbox Code Playgroud)

这导致 A 存储在任何地方。由此产生的程序是

ADD 2, 1, 1  // Box 1 = A  Box 2 = 2A  Box 3 = C
ADD 3, 1, 1  // Box 1 = A  Box 2 = 2A  Box 3 = 2A
SUB 2, 2, 1  // Box 1 = A  Box 2 = A   Box 3 = 2A
SUB 3, 3, 1  // Box 1 = A  Box 2 = A   Box 3 = A
Run Code Online (Sandbox Code Playgroud)

对于第二个问题,一个可爱的技巧是将某个盒子除以它自己的值,然后将 1 放入其中。例如:

DIV 1, 1, 1
Run Code Online (Sandbox Code Playgroud)

现在,让我们通过将框 1 的内容加倍并将其存储在那里,将 2 放入框 2:

ADD 2, 1, 1
Run Code Online (Sandbox Code Playgroud)

现在,让我们通过将框 2 的内容加倍并将其存储在那里,将 4 放入框 3:

ADD 3, 2, 2
Run Code Online (Sandbox Code Playgroud)

接下来,通过添加框 3 的内容将 2 添加到框 3。这使框 3 容纳 6:

ADD 3, 3, 2
Run Code Online (Sandbox Code Playgroud)

最后,通过添加框 3 的内容将 1 添加到框 3。这使得框 3 包含 7:

ADD 3, 3, 1
Run Code Online (Sandbox Code Playgroud)

总程序是这样的

DIV 1, 1, 1   // Box 1 = 1  Box 2 = ?  Box 3 = ?
ADD 2, 1, 1   // Box 1 = 1  Box 2 = 2  Box 3 = ?
ADD 3, 2, 2   // Box 1 = 1  Box 2 = 2  Box 3 = 4
ADD 3, 3, 2   // Box 1 = 1  Box 2 = 2  Box 3 = 6
ADD 3, 3, 1   // Box 1 = 1  Box 2 = 2  Box 3 = 7
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!