download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

PHP: Нелесна задача за график на автобуси

Автор
Съобщение
programings
Вто, 09.04.13, 19:25
Автобусна линия се движи от 06:30 до 20:30 часа.
Линията се обслужва от два автобуса - X и Y.

Автобуса X го карат шофьорите Петкан и Пешо, а автобуса Y - Стамат и Киро.

Шофьорите на тези автобуси са на две смени.
Смените са съответно:
Първа смяна от 06:30 до 12:45.
Втора смяна от 12:45 до 20:30.

Всяка седмица смените на шофьорите се сменят.
Например, да кажем, че тази седмица автобуса X карат Петкан (първа смяна) и Пешо (втора смяна).
Другата седмица първа смяна ще е Пешо, а втора - Петкан.
Същото е и за автобуса Y.

Времето за обиколка на трасето, и връщане до началната спирка от един автобус е 30 минути.
От началната спирка тръгва по един автобус на всеки 15 минути, тъй като са два автобуса по една линия.

Изникват два въпроса:
1. Кой първи тръгва в 06:30 от началната спирка?
Четните седмици от там първи тръгва автобуса X със съответният шофьор на смяна.
Нечетните, съответно автобуса Y със съответният шофьор.

2. Тази седмица кой коя смяна е?
Естествено трябва да знаем към текущата седмица кой коя смяна е, за да можем да напишем
скирпта да го изчислява занапред.
Да кажем, че тази седмица първа смяна (06:30 - 12:45) са:

Автобус X - Пешо
Автобус Y - Киро

Искам чрез PHP да представя:

1. Точните часове през целият ден, когато тръгват от началната спирка автобусите X и Y.
2. Кой шофьор ще тръгне в съответният час и с кой автобус от началната спирка.
3. Прогноза за 1 седмица напред за по-горните две неща.

редактиран от programings на 09.04.13 19:29
редактиран от programings на 09.04.13 19:32
insecteater
Сря, 10.04.13, 10:16
За кога ти трябва това?
programings
Сря, 10.04.13, 14:41
А, не ми е спешно.
Няма някакъв краен срок. Просто ми е любопитно как ще стане.

Една малка вметка, която леко променя условието:

Часовете в които се сменят шофьорите се променят през ден.
Един ден се сменят в 12:45, а на другият в 13:00.

редактиран от programings на 10.04.13 14:43
insecteater
Пон, 15.04.13, 12:25
Хвърли един поглед на това. Не съм правил поправката за разликите в смените от 15 минути на обед. Погнали са ме тука с едни проверки по ISO и нямам време да се занимавам с извънслужебни неща.
razpisanie.php.txt
programings
Пон, 15.04.13, 14:53
Върши ми работа.
Мерси много!

Сега изникват обаче следните проблеми:

1. Отчита се един курс повече (20:45), при положение, че в смените е зададен за последен курс 20:30, и то според скрипта, то този последен курс се кара от шофьор от първата смяна.
2. Кой бус тръгва първи от началната спирка трябва да се определя динамично според това дали денят е четен или не (в нечетните дни - понеделник, сряда, петък първи тръгва автобус X, а съответно в четните - автобус Y).
3. Всеки ден шофьорите се сменят в различен час, т.е. втората смяна (12:45 (13:00) - 20:30) застъпва по различно време през ден. Също се определя по това дали денят е четен или не. В нечетните дни смяната се извършва в 12:45, а в четните - 13:00 ч. Ако не се коригира, то скрипта не отчита вярно часовете.
4. Неделя не трябва да се отчита - линията не работи!

Също би било много хубаво, ако се направи отделен модул за разписание по различните спирки (да, в момента нямам точните часове, когато буса минава през различните спирки, но може да се оставят два празни масива - един с елементи за времената през които буса минава през спирките и един за имената на спирките, и информацията, когато масивите се попълнят и не са празни, да се извежда в една отделна страница, примерно с линкче към времето в началната страница на разписанието, което да води към динамична страница, където информацията за разписание по спирки ще се извежда).

редактиран от programings на 15.04.13 18:31
редактиран от programings на 15.04.13 18:31
insecteater
Вто, 16.04.13, 13:43

RE: PHP: Нелесна задача за график на автобуси

По т. 1 - Коригирано е. Един ред не си беше на мястото.
По т. 2. -
Най напред казваш така:
” ...
Четните седмици от там първи тръгва автобуса X със съответният шофьор на смяна.
Нечетните, съответно автобуса Y със съответният шофьор.
... „
А след това така:
” ...
2. Кой бус тръгва първи от началната спирка трябва да се определя динамично според това дали денят е четен или не... „
Променено е, дано да няма други промени в изискванията . Или пък да не би да имаш предвид, че се променят според деня И седмицата ?????
По т. 3 - Добавено е. Забележи обаче, че шофьорите които са втора смяна са прецакани и заради това 15 минутно изместване, винаги през седмицата един и същ шофьор ще започва първи втора смяна. Освен това има разлика в броя на курсовете, които различните шофьори поемат. Ако съм от инспекцията по труда, бих те глобил
По т. 4. - Коригирано е.

По останалите неща - и те могат да се направят. Но това вече намирисва на създаването на приложение, отколкото на помощ за задача. Заслужава ли си да се губи още време за това ако е само с учебна цел?

razpisanie.php.txt

редактиран от insecteater на 16.04.13 13:43
programings
Вто, 16.04.13, 15:40
Е, мерси много!

Абе първоначално го мислех с учебна цел, но ми се иска да го пусна в онлайн вариант, и да е в помощ на пътниците, които ползват линията.

Мисля обаче, че ще стана прекалено нахален, така че и толкова му стига.

Мерси много още веднъж!

редактиран от programings на 16.04.13 15:41
insecteater
Вто, 16.04.13, 17:02
Искаш да кажеш, че това не е измислен вариант а реален? В такъв случай си заслужава да се изпипа докрай.
programings
Вто, 16.04.13, 17:17
Да, да, реална ситуация, реална линия.
Просто имената са променени.

Всички прилики с действителни лица и събития са случайни.

insecteater
Сря, 17.04.13, 16:33
Прегледай това:

razpisanie.php.txt

Но ако ми кажеш, че в почивните дни курсовете са разредени, или че между 8 и 17:00 са през 30 минути а не през 15 и ще те пратя по дяволите . Някои неща могат да се настройват чрез променливите на класа - задават се началните настройки и си викаш метода, който ти трябва.

programings
Сря, 17.04.13, 17:00
Ей сега ще го разгледам.

Абе да ти кажа, за събота не съм много сигурен дали са редовни курсовете или е само един бус на 30 минути, ще поразпитам утре. Виж, хич я изключих тази събота.

Едит: Леле, браво! Ето това търсех!
Разгледах го, настроих го, и всичко се отчита вярно - спирки, времена, шофьори и автобуси!
Мерси много, Ганчо! Ще е в помощ на много пътници по тази линия, тъй като е една от най-натоварените в моят град.

редактиран от programings на 17.04.13 17:42
programings
Пон, 22.04.13, 14:49
Да, за събота е различно разписанието. Днес питах.

Значи един автобус е на 30 минути от 09:00 до 18:00 часа, и всеки път автобуса е един и същ - X Икарус, като съответно шофьорите му се сменят.
Тази събота дето мина е бил Пешо, а другата съответно ще е Петкан.

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.