1шаг влево
2шага вниз
1шаг направо
1шаг вверх
1шаг влево
если с поворотами то примерно так:
1шаг влево
повернуться против часовой стрелки
2 шага прямо
повернутся против часовой стерлки
1шаг прямо
повернуться против часовй стрелки
1 шаг прямо
повернуться против часовй стреки
1 шаг прямо
1 способ
Применим метод уменьшения в два раза области неопределенности(путь к стелажу выделен жирным шрифтом):
16
8-8
4-4 4-4
2-2 2-2 2-2 2-2
1-1 1-1 1-1 1-1 1-1 1-1 1-1 1-1
МЫ потратили 4 бита информации на поиск нужного стеллажа, теперь нащдо найти нужную нам полку:
6
3-3
2-1 2-1
1-1 1 1-1 1
Потрачено еще 3 бита информации. Всего информации 4+3 равно 7 бит информации.
2 способ:
Воспользуемся формулой: 2
2^i=N
Количество информации о нахождении стеллажа:
2^4=16
i=4 бита
Количество информации о нахождении полки:
2^i6 поэтому возьмем число 2^i так чтобы результат находился рядом с числом 6. Так как если число будет меньше 6 то мы не сможем точно получить информация, то 2^i должно быть больше 6. Значит:
2^3=8
I=3
4+3=7 бит информации
Var a: byte;
begin
writeln('Введите номер месяца:');
readln(a);
case a of
1, 2, 12: writeln('Зима');
3..5: writeln('Весна');
6..8: writeln('Лето');
9..11: writeln('Осень')
else writeln('Ошибка');
end;
end.
// PascalABC.NET 3.1, сборка 1256 от 21.06.2016
begin
case ReadInteger('Номер месяца (1-12):') of
1,2,12:Writeln('Зима');
3..5:Writeln('Весна');
6..8:Writeln('Лето');
9..11:Writeln('Осень');
else Writeln('Неверный номер месяца')
end
end.
<u>Вариант "для школьников"</u>
// PascalABC.NET 3.1, сборка 1256 от 21.06.2016
var n:integer;
begin
Write('Номер месяца (1-12): '); Read(n);
case n of
1,2,12:Writeln('Зима');
3..5:Writeln('Весна');
6..8:Writeln('Лето');
9..11:Writeln('Осень');
else Writeln('Неверный номер месяца')
end
end.