Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
© К. Поляков, 2009-2013
Тема: Поиск алгоритма минимальной длины для исполнителя.
Что нужно знать:
У исполнителя Калькулятор две команды, которым присвоены номера:
1. прибавь 3
2. умножь на 4
Выполняя первую из них, Калькулятор прибавляет к числу на экране 3, а выполняя вторую, умножает его на 4. Запишите порядок команд в программе получения из числа 3 числа 57, содержащей не более 6 команд, указывая лишь номера команд.
(Например, программа 21211 это программа
умножь на 4
прибавь 3
умножь на 4
прибавь 3
прибавь 3
которая преобразует число 2 в 50.)
Решение (вариант 1, «прямой ход»):
3
6
24
9
12
48
15
1
1
1
2
2
2
48
51
54
57
1
1
1
уже чувствуется, что дерево сильно разрастается, на следующем уровне будет уже 8 вариантов, потом 16 и т.д. (на каждом следующем уровне в 2 раза большем, чем на предыдущем)
Возможные ловушки и проблемы:
|
Решение (вариант 2, «обратный ход»):
Возможные ловушки и проблемы:
|
Почему здесь «обратный ход» лучше?:
|
У исполнителя, который работает с положительными однобайтовыми двоичными числами, две команды, которым присвоены номера:
1. сдвинь влево
2. вычти 1
Выполняя первую из них, исполнитель сдвигает число на один двоичный разряд влево, а выполняя вторую, вычитает из него 1. Исполнитель начал вычисления с числа 104 и выполнил цепочку команд 11221. Запишите результат в десятичной системе.
Решение:
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|||
? |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
= 45 |
|
0 |
||||||||||
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
= 90 |
бит
переноса
можно доказать, что в большинстве случаев результат этой операции умножение числа на 2, однако есть исключение: если в старшем (7-ом) бите исходного числа x была 1, она будет «выдавлена» в бит переноса, то есть потеряна3, поэтому мы получим остаток от деления числа 2x на 28=256
Код команды |
Действие |
Результат |
Примечание |
104 |
|||
1 |
умножь на 2 |
208 |
|
1 |
умножь на 2 |
160 |
остаток от деления 208*2 на 256 |
2 |
вычти 1 |
159 |
|
2 |
вычти 1 |
158 |
|
1 |
умножь на 2 |
60 |
остаток от деления 158*2 на 256 |
Исполнитель Робот действует на клетчатой доске, между соседними клетками которой могут стоять стены. Робот передвигается по клеткам доски и может выполнять команды 1 (вверх), 2 (вниз), 3 (вправо) и 4 (влево), переходя на соседнюю клетку в направлении, указанном в скобках. Если в этом направлении между клетками стоит стена, то Робот разрушается. Робот успешно выполнил программу
3233241
Какую последовательность из трех команд должен выполнить Робот, чтобы вернуться в ту клетку, где он был перед началом выполнения программы, и не разрушиться вне зависимости от того, какие стены стоят на поле?
Решение:
? |
? |
? |
? |
? |
? |
? |
? |
? |
? |
||
? |
? |
? |
|||
? |
? |
? |
? |
||
? |
? |
? |
? |
? |
? |
Робот начал движение из клетки, отмеченной красной точкой, и закончил в клетке, где стоит синяя точка
Исполнитель Робот ходит по клеткам бесконечной вертикальной клетчатой доски, переходя по одной из команд вверх, вниз, вправо, влево в соседнюю клетку в указанном направлении. Робот выполнил следующую программу:
вправо
вверх
влево
влево
вниз
вниз
вправо
вправо
вправо
вниз
влево
Укажите наименьшее возможное число команд в программе, переводящей Робота из той же начальной клетки в ту же конечную.
Решение (способ 1, моделирование движения Робота):
вниз вниз вправо |
Решение (способ 2, анализ программы):
вправо
вверх
влево
влево
вниз
вниз
вправо
вправо
вправо
вниз
влево
Исполнитель КУЗНЕЧИК живёт на числовой оси. Начальное положение КУЗНЕЧИКА точка 0. Система команд Кузнечика:
Вперед 4 Кузнечик прыгает вперед на 4 единицы,
Назад 3 Кузнечик прыгает назад на 3 единицы.
Какое наименьшее количество раз должна встретиться в программе команда «Назад 3», чтобы Кузнечик оказался в точке 27?
Решение (составление уравнения, подбор решения):
нужно подобрать минимальное неотрицательное , при котором правая часть делится на 4
1. вычти 2
2. умножь на три
Первая из них уменьшает число на экране на 2, вторая утраивает его. Запишите порядок команд в программе получения из 11 числа 13, содержащей не более 5 команд, указывая лишь номера команд. (Например, 21211 это программа:
умножь на три
вычти 2
умножь на три
вычти 2
вычти 2,
которая преобразует число 2 в 8). (Если таких программ более одной, то запишите любую из них.)
1. прибавь 2
2. умножь на 3
Выполняя первую из них, Калькулятор прибавляет к числу на экране 2, а выполняя вторую, утраивает его. Запишите порядок команд в программе получения из 0 числа 28, содержащей не более 6 команд, указывая лишь номера команд. (Например, программа 21211 это программа:
умножь на 3
прибавь 2
умножь на 3
прибавь 2
прибавь 2,
которая преобразует число 1 в 19).
1. вычти 1
2. умножь на 3
Первая из них уменьшает число на экране на 1, вторая увеличивает его в три раза.
Запишите порядок команд в программе получения из числа 3 числа 16, содержащей не более 5 команд, указывая лишь номера команд.
(Например, программа 21211 это программа
умножь на 3
вычти 1
умножь на 3
вычти 1
вычти 1
которая преобразует число 1 в 4.)
Вперед N (Кузнечик прыгает вперед на N единиц);
Назад M (Кузнечик прыгает назад на M единиц).
Переменные N и M могут принимать любые целые положительные значения. Известно, что Кузнечик выполнил программу из 50 команд, в которой команд “Назад 2” на 12 больше, чем команд “Вперед 3”. Других команд в программе не было. На какую одну команду можно заменить эту программу, чтобы Кузнечик оказался в той же точке, что и после выполнения программы?
1. Умножь на 2
2. Вычти 2
Выполняя команду номер 1, КАЛЬКУЛЯТОР умножает число на экране на 2, а выполняя
команду номер 2, вычитает из числа на экране 2. Напишите программу, содержащую не
более 5 команд, которая из числа 7 получает число 44. Укажите лишь номера команд.
Например, программа 11221 это программа:
Умножь на 2;
Умножь на 2;
Вычти 2;
Вычти 2;
Умножь на 2,
которая преобразует число 5 в число 32.
1. умножь на 3
2. вычти 2
Выполняя команду номер 1, КАЛЬКУЛЯТОР умножает число на экране на 3, а выполняя
команду номер 2, вычитает из числа на экране 2. Напишите программу, содержащую не
более 5 команд, которая из числа 1 получает число 23. Укажите лишь номера команд.
Например, программа 11221 это программа:
умножь на 3
умножь на 3
вычти 2
вычти 2
умножь на 3,
которая преобразует число 1 в число 15.
1. Вычти 3
2. Умножь на 2
Выполняя команду номер1, КАЛЬКУЛЯТОР вычитает из числа на экране 3, а выполняя
команду номер 2, умножает число на экране на 2. Напишите программу, содержащую не
более 5 команд, которая из числа 5 получает число 25. Укажите лишь номера команд.
Например, программа 22221 это программа:
Умножь на 2
Умножь на 2
Умножь на 2
Умножь на 2
Вычти 3,
которая преобразует число 1 в число 13.
1. Умножь на 2
2. Вычти 1
Выполняя команду номер 1, КАЛЬКУЛЯТОР умножает число на экране на 2, а выполняя
команду номер 2, вычитает из числа на экране 1. Напишите программу, содержащую не
более 4 команд, которая из числа 7 получает число 52. Укажите лишь номера команд.
Например, программа 12121 - это программа:
Умножь на 2
Вычти 1
Умножь на 2
Вычти 1
Умножь на 2
которая преобразует число 5 в число 34.
Сместиться на вектор (а, Ь) исполнитель перемещается в точку, в которую можно попасть из данной, пройдя а единиц по горизонтали и b по вертикали.
Запись: Повторить 5[ Команда 1 Команда 2] означает, что последовательность команд в квадратных скобках повторяется 5 раз.
Чертежник находится в начале координат. Чертежнику дан для исполнения следующий алгоритм:
Сместиться на вектор (5,2)
Сместиться на вектор (-3, 3)
Повторить 3[Сместиться на вектор (1,0)]
Сместиться на вектор (3, 1)
На каком расстоянии от начала координат будет находиться исполнитель Чертежник в результате выполнения данного алгоритма?
Умножь на 2
Прибавь 1
Выполняя команду номер 1, КАЛЬКУЛЯТОР умножает число на экране на 2, а выполняя
команду номер 2, прибавляет к числу на экране 1. Напишите программу, содержащую не
более 5 команд, которая из числа 6 получает число 33. Укажите лишь номера команд.
Например, программа 12122 -это программа:
Умножь на 2
Прибавь 1
Умножь на 2
Прибавь 1
Прибавь 1
которая преобразует число 5 в число 24.
1. сдвинь влево
2. вычти 1
Выполняя первую из них, исполнитель сдвигает число на один двоичный разряд влево, а выполняя вторую, вычитает из него 1. Исполнитель начал вычисления с числа 91 и выполнил цепочку команд 112112. Запишите результат в десятичной системе.
1. сдвинь вправо
2. прибавь 4
Выполняя первую из них, исполнитель сдвигает число на один двоичный разряд вправо, а выполняя вторую, добавляет к нему 4. Исполнитель начал вычисления с числа 191 и выполнил цепочку команд 112112. Запишите результат в десятичной системе.
Выполняя команду номер 1, КАЛЬКУЛЯТОР вычитает из числа на экране 1, а выполняя
команду номер 2, умножает число на экране на 2. Напишите программу, содержащую не
более 4 команд, которая из числа 3 получает число 16. Укажите лишь номера команд.
Например, программа 21211 это программа:
Умножь на 2
Вычти 1
Умножь на 2
Вычти 1
Вычти 1
которая преобразует число 1 в число 0.
Выполняя команду номер 1, КВАДРАТОР возводит число на экране в квадрат, а выполняя
команду номер 2, прибавляет к этому числу 1. Напишите программу, содержащую не
более 4 команд, которая из числа 2 получает число 36. Укажите лишь номера команд.
Например, программа 12122 это программа:
Возведи в квадрат
Прибавь 1
Возведи в квадрат
Прибавь 1
Прибавь 1
которая преобразует число 1 в число 6.
1. Вычти 1
2. Умножь на 2
Выполняя команду номер1, КАЛЬКУЛЯТОР вычитает из числа на экране 1, а выполняя
команду номер 2, умножает число на экране на 2. Напишите программу, содержащую не
более 4 команд, которая из числа 2 получает число 14. Укажите лишь номера команд.
Например, программа 21211 это программа:
Умножь на 2
Вычти 1
Умножь на 2
Вычти 1
Вычти 1,
которая преобразует число 1 в число 0.
влево
вверх
вверх
влево
вниз
вправо
вправо
вправо
Укажите наименьшее возможное число команд в программе, Робота из той же начальной клетки в ту же конечную.
Выполняя команду номер 1, СУММАТОР складывает числа в двух окнах и записывает результат в первое окно, а выполняя команду номер 2, заменяет этой суммой число во втором окне. Напишите программу, содержащую не более 5 команд, которая из пары чисел 1 и 2 получает пару чисел 13 и 4. Укажите лишь номера команд.
Например, программа 21211 это программа:
Запиши сумму чисел во второе окно
Запиши сумму чисел в первое окно
Запиши сумму чисел во второе окно
Запиши сумму чисел в первое окно
Запиши сумму чисел в первое окно
которая преобразует пару чисел 1 и 0 в пару чисел 8 и 3.
Выполняя команду номер 1, КАЛЬКУЛЯТОР вычитает из числа на экране 1, а выполняя
команду номер 2, умножает число на экране на 3. Напишите программу, содержащую не
более 5 команд, которая из числа 3 получает число 16. Укажите лишь номера команд.
Например, программа 21211 это программа:
Умножь на 3
Вычти 1
Умножь на 3
Вычти 1
Вычти 1
которая преобразует число 1 в число 4.
1. прибавь 3
2. умножь на 2
Выполняя первую из них, Калькулятор прибавляет к числу на экране 3, а выполняя вторую, удваивает его. Запишите порядок команд в программе получения из 1 числа 47, содержащей не более 6 команд, указывая лишь номера команд. (Например, программа 21211 это программа:
умножь на 2
прибавь 3
умножь на 2
прибавь 3
прибавь 3,
которая преобразует число 1 в 6).
1132432
Какую последовательность из трех команд должен выполнить Робот, чтобы вернуться в ту клетку, где он был перед началом выполнения программы, и не разрушиться вне зависимости от того, какие стены стоят на поле?
33233241
Какую последовательность из четырех команд должен выполнить Робот, чтобы вернуться в ту клетку, где он был перед началом выполнения программы, и не разрушиться вне зависимости от того, какие стены стоят на поле?
Вперед N Кузнечик прыгает вперед на N единиц
Назад M Кузнечик прыгает назад на M единиц
Переменные N и M могут принимать любые целые положительные значения. Кузнечик выполнил программу из 20 команд, в которой команд «Назад 4» на 4 меньше, чем команд «Вперед 3» (других команд в программе нет). На какую одну команду можно заменить эту программу?
вверх
влево
влево
вниз
вниз
вправо
вправо
вниз
вправо
вверх
Укажите наименьшее возможное число команд в программе, переводящей Робота из той же начальной клетки в ту же конечную.
вправо
вниз
вправо
вверх
влево
вверх
вверх
влево
Укажите наименьшее возможное число команд в программе, переводящей Робота из той же начальной клетки в ту же конечную.
вниз
влево
вниз
влево
вверх
вправо
вверх
Укажите наименьшее возможное число команд в программе, переводящей Робота из той же начальной клетки в ту же конечную.
вверх
влево
влево
вверх
вправо
вверх
вправо
Укажите наименьшее возможное число команд в программе, переводящей Робота из той же начальной клетки в ту же конечную.
2324142
Какую последовательность из трех команд должен выполнить Робот, чтобы вернуться в ту клетку, где он был перед началом выполнения программы, и не разрушиться вне зависимости от того, какие стены стоят на поле?
1. прибавь 2
2. умножь на 3
Выполняя первую из них, Калькулятор прибавляет к числу на экране 3, а выполняя вторую, утраивает его. Запишите порядок команд в программе получения из 0 числа 56, содержащей не более 5 команд, указывая лишь номера команд. (Например, программа 21211 это программа:
умножь на 3
прибавь 2
умножь на 3
прибавь 2
прибавь 2,
которая преобразует число 2 в 28).
1. прибавь 1
2. умножь на 3
Выполняя первую из них, Калькулятор прибавляет к числу на экране 1, а выполняя вторую, утраивает его. Запишите порядок команд в программе получения из 2 числа 26, содержащей не более 6 команд, указывая лишь номера команд. (Например, программа 21211 это программа:
умножь на 3
прибавь 1
умножь на 3
прибавь 1
прибавь 1,
которая преобразует число 1 в 14).
Выполняя команду номер 1, КАЛЬКУЛЯТОР вычитает из числа на экране 1, а выполняя
команду номер 2, умножает число на экране на 2. Напишите программу, содержащую не
более 4 команд, которая из числа 13 получает число 100. Укажите лишь номера команд.
Например, программа 21211 это программа:
Умножь на 2
Вычти 1
Умножь на 2
Вычти 1
Вычти 1
которая преобразует число 2 в число 4.
Выполняя команду номер 1, КВАДРАТОР возводит число на экране в квадрат, а выполняя
команду номер 2, прибавляет к этому числу 1. Напишите программу, содержащую не
более 4 команд, которая из числа 1 получает число 17. Укажите лишь номера команд.
Например, программа 12122 это программа:
Возведи в квадрат
Прибавь 1
Возведи в квадрат
Прибавь 1
Прибавь 1
которая преобразует число 1 в число 6.
1. прибавь 1
2. умножь на 3
Выполняя первую из них, Калькулятор прибавляет к числу на экране 1, а выполняя вторую, утраивает его. Запишите порядок команд в программе получения из 3 числа 34, содержащей не более 5 команд, указывая лишь номера команд.
(Например, программа 21211 это программа
умножь на 3
прибавь 1
умножь на 3
прибавь 1
прибавь 1
которая преобразует число 1 в 14.)
1. сдвинь биты числа влево на одну позицию
2. прибавь 1
Например, число 7 (000001112) преобразуется командой 1 в 14 (000011102). Для заданного числа 14 выполнена последовательность команд 11222. Запишите полученный результат в десятичной системе счисления.
Вперед 6 Кузнечик прыгает вперёд на 6 единиц,
Назад 4 Кузнечик прыгает назад на 4 единицы.
Какое наименьшее количество раз должна встретиться в программе команда «Назад 4», чтобы Кузнечик оказался в точке 28?
Вперед 5 Кузнечик прыгает вперёд на 5 единиц,
Назад 3 Кузнечик прыгает назад на 3 единицы.
Какое наименьшее количество раз должна встретиться в программе команда «Назад 3», чтобы Кузнечик оказался в точке 21?
Вперед 7 Кузнечик прыгает вперёд на 7 единиц,
Назад 5 Кузнечик прыгает назад на 5 единиц.
Какое наименьшее количество раз должна встретиться в программе команда «Назад 5», чтобы Кузнечик оказался в точке 19?
Вперед 7 Кузнечик прыгает вперёд на 7 единиц,
Назад 4 Кузнечик прыгает назад на 4 единицы.
Какое наименьшее количество раз должна встретиться в программе команда «Назад 4», чтобы Кузнечик оказался в точке 43?
Вперед 17 Кузнечик прыгает вперёд на 17 единиц,
Назад 6 Кузнечик прыгает назад на 6 единиц.
Какое наименьшее количество раз должна встретиться в программе команда «Назад 6», чтобы Кузнечик оказался в точке 36?
Вперед 3 Кузнечик прыгает вперёд на 3 единицы,
Назад 5 Кузнечик прыгает назад на 5 единиц.
За какое наименьшее количество команд можно перевести Кузнечика в точку (-4)?
1. прибавь 1
2. умножь на 3
Выполняя первую из них, Калькулятор прибавляет к числу на экране 1, а выполняя вторую, утраивает его. Запишите порядок команд в программе получения из 4 числа 51, содержащей не более 5 команд, указывая лишь номера команд.
(Например, программа 21211 это программа
умножь на 3
прибавь 1
умножь на 3
прибавь 1
прибавь 1
которая преобразует число 1 в 14.)
Выполняя команду номер 1, КАЛЬКУЛЯТОР прибавляет к числу на экране 1, а выполняя
команду номер 2, умножает число на экране на 2. Укажите минимальное число команд, которое должен выполнить исполнитель, чтобы получить из числа 17 число 729.
Выполняя команду номер 1, КАЛЬКУЛЯТОР прибавляет к числу на экране 1, а выполняя
команду номер 2, умножает число на экране на 2. Укажите минимальное число команд, которое должен выполнить исполнитель, чтобы получить из числа 21 число 813.
Выполняя команду номер 1, КАЛЬКУЛЯТОР прибавляет к числу на экране 1, а выполняя
команду номер 2, умножает число на экране на 2. Укажите минимальное число команд, которое должен выполнить исполнитель, чтобы получить из числа 19 число 629.
Выполняя команду номер 1, КАЛЬКУЛЯТОР прибавляет к числу на экране 1, а выполняя
команду номер 2, умножает число на экране на 3. Укажите минимальное число команд, которое должен выполнить исполнитель, чтобы получить из числа 37 число 1013.
Выполняя команду номер 1, КАЛЬКУЛЯТОР прибавляет к числу на экране 1, а выполняя
команду номер 2, умножает число на экране на 2. Укажите минимальное число команд, которое должен выполнить исполнитель, чтобы получить из числа 23 число 999.
Выполняя команду номер 1, КАЛЬКУЛЯТОР прибавляет к числу на экране 7, а выполняя
команду номер 2, делит число на экране на 4. Напишите программу, содержащую не
более 5 команд, которая из числа 13 получает число 10. Укажите лишь номера команд.
Например, программа 21211 это программа:
Раздели на 4
Прибавь 7
Раздели на 4
Прибавь 7
Прибавь 7
которая преобразует число 20 в число 17.
Выполняя команду номер 1, КАЛЬКУЛЯТОР прибавляет к числу на экране 5, а выполняя
команду номер 2, умножает число на экране на 3. Напишите программу, содержащую не
более 5 команд, которая из числа 3 получает число 59.
Первая из них увеличивает число на экране на 2, вторая утраивает его.
Запишите порядок команд в программе преобразования числа 3 в число 69, содержащей не более 5 команд, указывая лишь номера команд. Если таких программ более одной, то запишите любую из них.
Первая из этих команд увеличивает число на экране на 1, вторая возводит в квадрат. Программа для исполнителя Квадр - это последовательность номеров команд.
Запишите программу для исполнителя Квадр, которая преобразует число 5 в число 2500 и содержит не более 6 команд. Если таких программ более одной, то запишите любую из них.
Первая из этих команд увеличивает число на экране на 1, вторая возводит в квадрат. Программа для исполнителя Квадр - это последовательность номеров команд.
Запишите программу для исполнителя Квадр, которая преобразует число 3 в число 10001 и содержит не более 6 команд. Если таких программ более одной, то запишите любую из них.
3 Используя ассемблер (язык машинных кодов с символьными командами), можно добраться до бита переноса и использовать его.
4 Кроме логического сдвига вправо, о котором идет речь, есть еще арифметический, при котором старший бит не меняется.
5 Источники заданий:
Демонстрационные варианты ЕГЭ 2004-2013 гг.
Тренировочные работы МИОО.
Гусева И.Ю. ЕГЭ. Информатика: раздаточный материал тренировочных тестов. СПб: Тригон, 2009.
Крылов С.С., Лещинер В.Р., Якушкин П.А. ЕГЭ-2010. Информатика. Универсальные материалы для подготовки учащихся / под ред. В.Р. Лещинера / ФИПИ. М.: Интеллект-центр, 2010.
Якушкин П.А., Ушаков Д.М. Самое полное издание типовых вариантов реальных заданий ЕГЭ 2010. Информатика. М.: Астрель, 2009.
М.Э. Абрамян, С.С. Михалкович, Я.М. Русанова, М.И. Чердынцева. Информатика. ЕГЭ шаг за шагом. - М.: НИИ школьных технологий, 2010.
Самылкина Н.Н., Островская Е.М. ЕГЭ 2011. Информатика. Тематические тренировочные задания. М.: Эксмо, 2010.