Вы работаете курьером в офисе «Газпрома».
Офис представляет собой небоскрёб с N этажами (N - входное значение, целое число от 1 до 99 включительно). Кабинеты пронумерованы таким образом, что первые две цифры номера - это номер этажа, а последние 3 - это собственно номер кабинета (к примеру, кабинет 56013 расположен на 56 этаже, а 6066 - на шестом). На каждом этаже есть холл, от него отходят несколько пронумерованных (по часовой стрелке, №1 слева от лифта) коридоров (на разных этажах планировки различны). Для определенности будем считать, что в каждом коридоре есть хотя бы один кабинет на левой стенке и хотя бы один кабинет на правой стенке.
Кабинеты нумеруются так: первый кабинет первого коридора имеет номер 001, далее кабинеты нумеруются по возрастанию по левой стороне, затем в обратном направлении (к холлу) по правой. Далее нумерация продолжается по тому же принципу в следующем по часовой стрелке коридоре. Вы можете перемещаться на лифте по этажам, входить в коридоры, двигаться по ним вдоль и поперёк, читать и запоминать номера, выполнять арифметические действия и операции сравнения с ними.
Цель алгоритма - дать указания курьеру для перемещения его от кабинета номер A к кабинету номер B.
Не забывайте, что задание состоит из трех частей: предложенная система команд, алгоритм в виде блок-схемы, произвольное описание его эффективности.
Система команд для курьера формируется Вами. Надо учитывать, что команды не должны быть неочевидные и двусмысленные. Например, "идти вперед по коридору" - из такой команды непонятно, в какой момент нужно ее закончить и перейти на следующий шаг. Но с другой стороны, стоит избегать элементарных, слишком детализированных команд. Т.е. в лифте расписывать подробно как курьеру нажать на кнопку нужного этажа тоже не стоит.
Видимо будет оправдано сделать декомпозицию задачи, т.е. разделение на подзадачи, которые оформляются в виде вспомогательных алгоритмов. Например, вполне допускаю алгоритм
"Дойти от кабинета А до холла". Этот вспомогательный алгоритм позволит курьеру находясь около определенного кабинета в коридоре определить в какой стороне холл и дойти до него.
Проверка алгоритма должна выполняться исходя из предположения, что исполнитель честный и примитивный. Он будет строго следовать указанным инструкциям и не будет ничего додумывать сам. Поставьте себя на его место и попробуйте сделать эту последовательность команд.
Не стоит пытаться написать алгоритм совершенно универсальный для любых моделей здания.
Т.е. можно предположить заведомо невозможными ситуации, допустим, с кольцевыми коридорами или пересекающимися коридорами...:) Даже наверное можно предположить, что в каждом коридоре есть как минимум один кабинет с левой и правой стороны. Но это уже лучше оговорить в начальных условиях задачи.
Обращайте внимание на правила оформления блок-схем.
При оценке алгоритма рецензентом стоит учитывать и его корректность и его оптимальность.
Гарантия на работу | 1 год |
Средний балл | 4.55 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |