Задать вопрос
@NoFlame

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

Работа светофора запрограмирована таким образом, что с начала каждого часа на протяжении 3 мин горит зеленый сигнал следующие 20 сек желтый и 2 мин горит красный и так по кругу, + есть информация что светофор запустили 22.01.1970 в 00:00, нужно написать код так , чтобы при вводе времени (год/месяц/час/минута/секунда) определяло какого цвета сейчас светофор. Столкнулся с этим заданием, и видел много способов решения, но они все были, просто по методу текущего времени, и с 2 цветами, хочу понять как решить эту задачку?
  • Вопрос задан
  • 197 просмотров
Подписаться 1 Средний 6 комментариев
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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
Потомок старинного рода Ипатьевых-Колотитьевых
Любую задачу, если она сразу не решается в голове, надо решать на бумажке с ручкой
причем без алгоритмов, тупо перебором.
рисуем шкалу времени, на ней сигналы светофора по очереди, и дальше берем даты внутри этой шкалы и тупо руками смотрим, какой сигнал.

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

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽