Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на языке Pascal


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Орловский Дмитрий
Статус: Академик
Рейтинг: 4404
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2644
∙ повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2348
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Pascal (Паскаль)

Номер выпуска:1170
Дата выхода:11.04.2011, 10:00
Администратор рассылки:Boriss (Академик)
Подписчиков / экспертов:179 / 179
Вопросов / ответов:1 / 1

Вопрос № 182756: Здравствуйте! Прошу помочь разработать программу для ABC ( или Turbo или Delphi-7): Задание - разработать схему расстановки кнопок и систему управления двумя лифтами. цель системы - максимально сократить суммарное время доставки всех пассажиро...



Вопрос № 182756:

Здравствуйте! Прошу помочь разработать программу для ABC ( или Turbo или Delphi-7):
Задание - разработать схему расстановки кнопок и систему управления двумя лифтами.
цель системы - максимально сократить суммарное время доставки всех пассажиров в нужные им места.
Нужно, чтобы было видно как лифты перемещаются по этажам (интерфейс - два массива из нулей выводимых на экран (число элементов соответствует этажам), в которых единичка-лифт будет перемещаться),

Пример
L1 = (0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0) (Лифт 1 на 4ом этаже из 16)

Очень важный вопрос. Почему именно такой алгоритм обеспечивает наиболее быструю доставку пассажиров на нужные им этажи.
Задание интересно до 16-00 пятницы. В этом случае стоимость работы + 150 рублей на РФПРО-счет Исполнителя. Сообщите, пожалуйста, до завтра, кто возьмется.
Спасибо.

Отправлен: 06.04.2011, 09:37
Вопрос задал: lamed (Профессор)
Всего ответов: 1
Страница вопроса »


Отвечает lupus campestris (Академик) :
Здравствуйте, lamed!

Я на Паскале и его производных языках не программирую, так что просто опишу, какой алгоритм использовала бы я.
Делаем предположение, что человек, вызывающий лифт не с первого этажа, с очень большой вероятностью поедет на первый этаж. И на этажа кнопка вызова лифта одна, без возможности указания направления желаемого движения.
Пусть есть точка вызова N, точка текущего положения лифта M, точка назначения лифта A. Тогда если рассматривать возможные соотношения чисел N, M и A относительно друг друга, получится, что для случая M>N>A лифт будет добираться |M-N|+|N-A|+|A-1|, а в остальных пяти случаях - |M-A|+|A-N|+|N-1|.
Эту формулу используем для обоих лифтов и тот, для кого значение получается меньше, откликается на вызов.
Пример - смотрите файл http://rfpro.ru/upload/5110

Удачи!

UPDATE (07.04.2011)
Думаю, что можно даже проще делать. Для каждого лифта рассматривать три варианта - лифт довозит пассажира 1 до нуж ного ему этажа, а потом забирает пассажира 2; лифт подбирает пассажира 2, сначала отвозит пассажира 1, а потом отвозит пассажира 2; лифт подбирает пассажира 2, отвозит пассажира 2, а потом отвозит пассажира 1. Здесь предполагается, что пассажир 1 - уже едет в лифте (если лифт стоит, то это случай, когда текущий и конечный этажи совпадают), а пассажир 2 - вызывает лифт. И для каждого лифта считается минимальное из этих значений, а потом сравниваются минимумы обоих лифтов. У кого он меньше - тот и забирает пассажира 2.
Тогда итоговая формула в приложенном эксельном файле будет выглядеть так:
=ЕСЛИ(МИН(ABS(B3-C3)+ABS(C3-A3)+ABS(A3-1);ABS(B3-A3)+ABS(A3-C3)+ABS(A3-1);ABS(B3-A3)+ABS(A3-1)+ABS(C3-1))<=МИН(ABS(D3-E3)+ABS(E3-A3)+ABS(A3-1);ABS(D3-A3)+ABS(A3-E3)+ABS(A3-1);ABS(D3-A3)+ABS(A3-1)+ABS(E3-1));B1;D1)
-----
«С кем тяжело молчать, с тем не о чем говорить» (Метерлинк)

Ответ отправил: lupus campestris (Академик)
Ответ отправлен: 06.04.2011, 21:36
Номер ответа: 266585
Россия, Москва
Адрес сайта: http://lupus-campestris.blogspot.com/

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 266585 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.



    В избранное