В общем пакете тестов полученном от одной компании был тест с реализацией на PHP подсчета количества вторников между двумя датами.
Описание задачи:
Первое, что пришло в голову - найти ближайшие вторники к начальной и конечной дате и поделить полученный интервал дней между ними на 7. Но тут возникает одна проблема, если даты в пределах периода меньше 7 дней. Появляется необходимость делать дополнительную проверку. На больших интервалах, возможно такой вариант и будет наименее затратным по ресурсам, но на коротких интервалах скорее всего нет. Одно из условий реализации - оптимальный алгоритм, без уточнения фактора оптимальности. Будем считать, что оптимальным должен быть код.
Решение задачи:
Тут стоит сделать несколько пояснений:
- Есть необходимость определения начальной и конечной даты задаваемого периода, потому что пользователь может их вводить по своему усмотрению. (см. строки 11-17)
- функция getCountTuesday (см. строки 19-26) - является рекурсивной и вызывает сама себя для подсчета вторников, пока последний подсчитываемый вторник не выйдет за границы заданного периода.
- применяемая для обработки дат функция idate преобразовывает задаваемые даты в число, чтобы была возможность производить сравнение дат.
Удачи в разработке!
другие материалы:
- Практический пример скрипта SOAP клиента на PHP для запросов к серверу ASP.NET
- решение тестовой задачи MySQL - количество дней в месяцах
- решение тестовой задачи MySQL - разность дат в соседних строках
- решение тестовой задачи PostgreSQL - создание выборок из базы данных
- решение тестовой задачи PHP, JS, MySQL - добавление комментариев к темам
- решение тестовой задачи PHP, JS, SQLite - каталог товаров с подгрузкой данных
- решение тестовой задачи PHP, PostgreSQL - группировка по пересечению
- решение тестовой задачи PHP - классы для обработки разных файлов
- решение тестовой задачи PHP - класс для очистки НДС в сумме счета
- решение тестовой задачи PHP - определить является ли число простым
- решение тестовой задачи PHP - вычисление суммы всех соседей элемента массива
- решение тестовой задачи PHP - подсчет количества вторников в интервале
- решение тестовой задачи PHP - формирование XML на основе данных из MySQL
- решение тестовой задачи PHP - класс реализации структуры Deque с кольцевым буфером
- решение тестовой задачи ORM RedBeanPHP - загрузка и вывод связанных данных
- решение тестовой задачи JavaScript - фильтрация списка на странице
- решение тестовой задачи Jquery - убегание блока от курсора
- Flutter Создание мобильной версии страницы сайта
- Flutter Отправка POST запроса со страницы сайта на сервер
- Flutter Создание диалогового окна с гиперссылкой в мобильной версии сайта
- Flutter Локальное сохранение данных в формате "ключ"-"значение"
- VS Code подключение удаленного доступа FTP(SFTP) с помощью "Remote FS"
- Flutter Использование Timer для периодического изменения текста на странице
- Flutter Форма авторизации с валидацией вводимых данных
- Flutter Авторизация с валидацией и отправкой данных на сервер
- Flutter WEB загрузка файла на сервер
- Flutter Widgets - интересные виджеты Flutter
- Telegram - работа с кнопками меню команд и web_app
- Pet-project memoLink с использованием HTMX - памятка с QR кодом
- Блок рабочего проекта WEBsmeta (описание) - расчет по стройматериалам для ремонта.
- Pet-project получение данных по акциям с Мосбиржи через API MOEX ISS.