@NoFlame

Как написать код в php чтобы он определял цвет светофора в конкретное время используя инпуты?

Работа светофора запрограмирована таким образом, что с начала каждого часа на протяжении 3 мин горит зеленый сигнал следующие 20 сек желтый и 2 мин горит красный и так по кругу, + есть информация что светофор запустили 22.01.1970 в 00:00, нужно написать код так , чтобы при вводе времени (год/месяц/час/минута/секунда) определяло какого цвета сейчас светофор. Столкнулся с этим заданием, и видел много способов решения, но они все были, просто по методу текущего времени, и с 2 цветами, хочу понять как решить эту задачку?
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
@MagicMight
no magic quotes
Если списать фразу "... с начала каждого часа..." на неточность изложения задачи, то, предполагаю, решение такое
$inputTime = strtotime('22.01.1970 00:02:55'); // green
$inputTime = strtotime('22.01.1970 00:03:15'); // yellow
$inputTime = strtotime('22.01.1970 00:03:30'); // red


$baseTime = strtotime('22.01.1970 00:00');
$cycleDuration = 180 + 20 + 120;
$x = ($inputTime - $baseTime) % $cycleDuration;
$color = null;

if ($x <= 180) {
    $color = 'green';
} elseif ($x <= 200) {
    $color = 'yellow';
} else {
    $color = 'red';
}

var_dump($color);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Любую задачу, если она сразу не решается в голове, надо решать на бумажке с ручкой
причем без алгоритмов, тупо перебором.
рисуем шкалу времени, на ней сигналы светофора по очереди, и дальше берем даты внутри этой шкалы и тупо руками смотрим, какой сигнал.

И потому же пытаемся такой поиск автоматизировать. Исходя из разницы в секундах между заданной датой и началом работы
Причем шкала пригодится для того, чтобы проверять правильность своего алгоритма.

Дерзайте.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы