Задание:
У исполнителя Удвоитель две команды, которым присвоены номера:
1. прибавь 1
2. умножь на 2
Выполняя первую из них, Удвоитель прибавляет к числу на экране 1, а выполняя вторую, умножает его на 2. Запишите порядок команд в программе получения из числа 3 числа 63, содержащей не более 8 команд, указывая лишь номера команд.
Решение:
1) Такие задачи проще решать, если переформулировать их для обратного исполнителя, которого можно назвать Раздвоителем; его команды
1. вычти 1
2. раздели на 2 (только для чётных чисел)
2) Получим с помощью Раздвоителя число 3 из 63 (идём в обратную сторону)
3) Будем использовать следующий (в данном случае – оптимальный) алгоритм: если число нечётное, вычитаем единицу (команда 1), потому что делить его на 2 нельзя; если число чётное, делим его на два; сверху записаны номера выполняемых команд:
1 2 1 2 1 2 1 2
63 → 62 → 31 → 30 → 15 → 14 → 7 → 6 → 3
таким образом, выполняя программу 12121212, Раздвоитель получает число 3 из 63
4) Программу для Удвоителя (выполняющего обратную цепочку действий) запишем в обратном порядке: 21212121
Ответ: 21212121