Использование ADD, SUB, MULT и DIV для помещения определенных значений в поля? - PullRequest
3 голосов
/ 22 марта 2012

Сегодня у меня было интервью для разработчика, и я должен был пройти этот тест на способности ... Я застрял один 2 вопроса:

box 1  box 2  box 3
 A      B      C

Как поставить А в каждой коробке только с этими 4 операторами (ADD, SUB, MULT и DIV)?

box 1  box 2  box 3

У вас есть числа 1,2 и 3, которые могут быть в коробке1, коробке2 или коробке3, но мы не знаем, в какой именно ... Как поместить 7 в коробку 3?

Может кто-нибудь объяснить мне, как это сделать? PS: синтаксис: ADD, 1,2,3 => box3 = box1 + box2

Спасибо

1 Ответ

4 голосов
/ 22 марта 2012

Для первого вопроса вы можете установить поля B и C равными 2A, просто сохраняя A + A в каждом:

ADD 2, 1, 1
ADD 3, 1, 1

Теперь просто вычтите A из каждого поля:

SUB 2, 2, 1
SUB 3, 3, 1

В результате 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

. Во втором вопросе один милый трюк состоит в том, чтобы разделить какой-либо блок на его собственное значение и вставить в него 1.Например:

DIV 1, 1, 1

Теперь давайте поместим 2 в блок 2, удвоив содержимое блока 1 и сохранив его там:

ADD 2, 1, 1

Теперь давайте поместим 4 в блок 3:Удвоить содержимое блока 2 и сохранить его там:

ADD 3, 2, 2

Затем добавьте 2 к блоку 3, добавив содержимое блока 3. Это заставит блок 3 удерживать 6:

ADD 3, 3, 2

Наконец, добавьте 1 к третьему блоку, добавив в него содержимое блока 3. Это означает, что в блоке 3 содержится 7:

ADD 3, 3, 1

Таким образом, общая программа составляет

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

Надеюсь, что этопомогает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...