Есть задача - составить график работы 2 через 2, если рабочий день выпадает на вск, переносим его на понедельник.
Я тут наворотил
немного кодаfunction start($date)
{
// Переводим в Unix
$dateNow = strtotime($date);
// День
$day = 1 * 24 * 3600;
// Дата окончания
$dateEnd = $dateNow + (30 * $day);
// Результат
$result = [];
while($dateNow < $dateEnd)
{
$dayOfWeek = intval(strftime("%w", $dateNow));
if($dayOfWeek > 0 && $dayOfWeek < 6) // Пн-пт
{
$result[] = $dateNow;
$dateNow += $day;
$result[] = $dateNow;
$dateNow += 3 * $day;
}
else if($dayOfWeek === 6) // Субб
{
$result[] = $dateNow;
$dateNow += 2 * $day;
$result[] = $dateNow;
$dateNow += 3 * $day;
}
else // Вск
{
$dateNow += $day;
$result[] = $dateNow;
$dateNow += $day;
$result[] = $dateNow;
$dateNow += 3 * $day;
}
}
// Запись
insert($result);
}
Он работает в моих тестах, но в тестах олимпиадных не работает (да, это олимпиада). Можете подсказать логику решения, если эта неверна, если верна, то в чем проблема?