Created
May 21, 2013 07:20
-
-
Save Qolt/5618048 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
масштаб_времени = 0,0001 | |
класс эмуляция_времени(): | |
конструктор класса(): | |
свойство время_начала = количество_секунд_с_фиксированного_момента_в_прошлом + доли_секунд | |
вывести "Время начала" + время_начала | |
получить_текущее_время(): | |
разница_времени = время_начала - (количество_секунд + доли_секунд) | |
текущее_время = разница_времени / масштаб_времени | |
вернуть текущее_время | |
класс запрос(): | |
конструктор(номер, время_появления): | |
номер = номер | |
время_появления = время_появления | |
класс грузовик(): | |
конструктор: | |
статус = "свободен" | |
время_завершения_работы = 0 | |
количество_заданий = 0 | |
время_работы = 0 | |
если имя_программы = "главная_программа": | |
запросы = пустой список | |
грузовики = два объекта класса грузовик | |
счетчик_запросов = 0 | |
общий_счетчик_запросов = 0 | |
время_окончания_связи = 0 | |
текущее_время = объект класса эмуляция_времени | |
время_нового_запроса = 5 минут + случайная величина от -4 до +4 | |
время_прошлого_запроса = 0 | |
текущий_запрос = 0 | |
номер_грузовика = случайное число от 0 до 1 | |
пока ткущиее_время.получить_текущее_время() <= 10 часов | |
если текущее_время.получить_текущее_время() >= время_прошлого_запроса + время_прошлого_запроса: | |
время_нового_запроса = 5 минут + случайная величина от -4 до +4 | |
время_прошлого_запроса = текущее_время.получить_текущее_время() | |
общее_количество_запросов увеличить на 1 | |
если длинна списка запросы < 5: | |
счетчик_запросов увеличить на 1 | |
к списку запросы добавить объект класса запрос(счетчик_запросов, текущее_время.получить_текущее_время()) | |
если список запросы не пуст: | |
если текущий_запрос равен номеру первого запроса в списке запросы: | |
если номер_грузовика = 1: | |
номер_грузовика = 0: | |
иначе: | |
номер_грузовика = 1 | |
иначе: | |
номер_грузовика = случайное число от 0 до 1 | |
текущий_запрос = номер первого запроса в списке запросы | |
если список запросы не пуст и время_связи меньше текущее_время.получить_текущее_время() | |
если статус грузовика с номером номер_грузовика из списка грузовики == "свободен": | |
статус грузовика с номером номер_грузовика из списка грузовики == "занят" | |
время_новой_работы = 12 минут + случайное число от -8 до +8 | |
время_завершения_работы грузовика с номером номер_грузовика из списка грузовики == текущее_время.получить_текущее_время() + время_новой_работы | |
к время_работы грузовика с номером номер_грузовика из списка грузовики прибавить время_новой_работы | |
количество_заданий грузовика с номером номер_грузовика из списка грузовики увеличить на единицу | |
время_окончания_связи = текущее_время.получить_текущее_время() + 1 минута | |
удалить первый запрос из списка запросы | |
если статус грузовика с номером номер_грузовика из списка грузовики == "занят": | |
время_окончания_связи = текущее_время.получить_текущее_время() + 1 минута | |
для каждого грузовика в списке грузовики: | |
если текущее_время.получить_текущее_время() > грузовик.время_окончания_работы: | |
грузовик.статус = "свободен" | |
Вывод результатов. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment