Задача:
«Симулятор лифта».
Программа запускается из командной строки, в качестве параметров задается:
- кол-во этажей в подъезде — N (от 5 до 20);
- высота одного этажа;
- скорость лифта при движении в метрах в секунду (ускорением пренебрегаем, считаем, что когда лифт едет — он сразу едет с определенной скоростью);
- время между открытием и закрытием дверей.
После запуска программа должна постоянно ожидать ввода от пользователя и выводить действия лифта в реальном времени. События, которые нужно выводить:
- лифт проезжает некоторый этаж;
- лифт открыл двери;
- лифт закрыл двери.
Возможный ввод пользователя:
- вызов лифта на этаж из подъезда;
- нажать на кнопку этажа внутри лифта.
Считаем, что пользователь не может помешать лифту закрыть двери.
Принятые допущения:
- этажи считаем с 1-го
- высота в метрах
- время в секундах
- считаем, что лифт останавливается мгновенно
- плавные разгон и торможение не реализуем
Дополнительная информация
В качестве интереса, решил попробовать в этом проекте:
- акторный фреймворк "sobjectizer" https://sourceforge.net/p/sobjectizer/wiki/Home/
- header-only парсер командной строки https://github.com/muellan/clipp
Для сборки использовался дистрибутив ALT Linux p8.
Сборка
autogen.sh && configure && make [ && make install ]
Запуск в docker
- собрать программу локально (!)
- зайти в каталог docker
- make demo
- make run (запуск)
- в появившейся консоли запустить elevator-control -h - для справки по параметрам запуска
Есть готовый образ с демкой: docker pull vpashka/elevator-demo
Сборка в docker
- зайти в каталог docker
- make build (создание образа с окружением для сборки)
- make run (запуск)
- в появившейся консоли запустить elevator-control -h - для справки по параметрам запуска