Занимательные задачи PHP

Занимательные задачи PHP

@php_tricker

Ваша цель: решить задачу максимально изящно и просто. Предлагайте свои варианты решения в комментариях. Задачи выходят по будням в 14.00.

352подписчиков
🇷🇺

Похожие каналы

Все →

Последние посты

Задача 219Архивация старых файловДана корневая папка с вложенными подпапками. Напишите скрипт, который:1. Найдет все файлы, которые не изменялись более 30 дней2. Создаст папку "archive" в корневой папке3. Переместит старые файлы в папку "archive", сохраняя структуру подпапок4. Запишет отчет в файл archiving_report.txtФормат отчета:"Архивировано файлов: 8Освобождено места: 4.2 МБАрхивированные файлы:- old_report.pdf (из /docs/)- backup.zip (из /backups/)- photo1.jpg (из /images/vacation/)"Структура подпапок в папке "archive" должна повторять исходную структуру.Примечание: файлы должны физически перемещаться, а не копироваться.

15 янв. 2026 г.165В Telegram

Задача 218Поиск дубликатов файловДана корневая папка с вложенными подпапками. Напишите скрипт, который:1. Рекурсивно обойдет все файлы2. Найдет файлы-дубликаты (файлы с одинаковым содержимым)3. Запишет результат в файл duplicates.txtФормат вывода в файл:"Группа дубликатов 1:- /путь/к/файлу1.txt- /путь/к/файлу2.txtГруппа дубликатов 2:- /путь/к/image1.jpg- /путь/к/image2.jpg- /путь/к/image3.jpg"Дубликаты определять по хешу содержимого файла (например, MD5).Файлы с одинаковым хешем считаются дубликатами.Примечание: не выводить группы из одного файла.

14 янв. 2026 г.153В Telegram

Задача 217Подсчет файлов по типам в дереве папокДана корневая папка с вложенными подпапками. Напишите скрипт, который:1. Рекурсивно обойдет все подпапки2. Подсчитает количество файлов по расширениям3. Запишет результат в файл file_stats.txtПример:Если в папках есть файлы: a.txt, b.txt, c.jpg, d.pdf, e.txtРезультат: .txt: 3 файла.jpg: 1 файл.pdf: 1 файлВсего файлов: 5Примечание: файлы без расширения не учитывать.

13 янв. 2026 г.158В Telegram

Задача 216Поиск самого большого файлаДана папка с файлами различных типов. Напишите скрипт, который:1. Найдет самый большой файл в папке по размеру (в байтах)2. Выведет информацию о нем: имя файла, размер в КБ, расширение3. Создаст файл largest_file.txt и запишет туда эту информациюФормат вывода в файл:"Самый большой файл: имя_файла.расширениеРазмер: 1234.56 КБ"Если несколько файлов имеют одинаковый максимальный размер,выберите первый найденный.Примечание: не рассматривайте подпапки, только файлы в текущей папке.

12 янв. 2026 г.161В Telegram

Задача 215Суммирование чисел из файловДана папка с текстовыми файлами. В каждом файле находятся целые числа, разделенные пробелами и переносами строк. Напишите скрипт, который:1. Прочитает все файлы с расширением .txt в папке2. Найдет сумму всех чисел из всех файлов3. Запишет результат в новый файл result.txtПример структуры:file1.txt: "10 20 30"file2.txt: "51525"file3.txt: "100 200"Результат: 10+20+30+5+15+25+100+200 = 405Файл result.txt: "405"Примечание: обрабатывайте только файлы с расширением .txt

11 янв. 2026 г.166В Telegram

Задача 214Чередование четных и нечетныхДан массив чисел. Проверьте, чередуются ли в нем четные и нечетные числа. Массив считается "чередующимся", если каждый следующий элемент имеет противоположную четность предыдущему.Примеры:[1, 2, 3, 4, 5] → true (нечетное, четное, нечетное, четное, нечетное)[2, 4, 6, 8] → false (все четные)[1, 3, 2, 4, 7] → false (1→3: оба нечетные)[10, 5, 8, 3, 2] → true (четное, нечетное, четное, нечетное, четное)[] → true (пустой массив считается чередующимся)[7] → true (один элемент всегда чередуется)

10 янв. 2026 г.152В Telegram

Задача 213Сумма цифр числа до однозначногоДано целое положительное число. Найдите сумму его цифр. Если полученная сумма больше 9, повторяйте процесс, пока не получите однозначное число (цифру от 1 до 9).Примеры:123 → 1+2+3 = 6 → 6987 → 9+8+7 = 24 → 2+4 = 6 → 6999 → 9+9+9 = 27 → 2+7 = 9 → 938 → 3+8 = 11 → 1+1 = 2 → 2Этот процесс иногда называют "цифровым корнем" числа.

9 янв. 2026 г.155В Telegram

Задача 212Перестановка максимального и минимального элементовДан массив чисел. Найдите в массиве максимальный и минимальный элементы и поменяйте их местами. Если максимальных или минимальных элементов несколько, поменяйте местами первые из найденных.Примеры:[3, 7, 2, 8, 5] → [3, 7, 8, 2, 5] (2 и 8 поменялись)[1, 1, 4, 4, 2] → [4, 1, 4, 1, 2] (первая 1 и первая 4 поменялись)[5, 5, 5, 5] → [5, 5, 5, 5] (массив не изменился)

8 янв. 2026 г.183В Telegram

Задача 211Определение типа последовательностиДан массив чисел. Определите, является ли последовательность: 1) Арифметической прогрессией (постоянная разность между элементами) 2) Геометрической прогрессией (постоянное отношение между элементами) 3) Ни тем, ни другимВерните строку: "арифметическая", "геометрическая" или "нет прогрессии".Примеры:[1, 3, 5, 7, 9] → "арифметическая" (разность 2)[2, 4, 8, 16, 32] → "геометрическая" (отношение 2)[1, 2, 3, 5, 8] → "нет прогрессии"[5, 5, 5, 5, 5] → "арифметическая" (разность 0) и "геометрическая" (отношение 1)Примечание: если массив подходит под оба типа, верните "арифметическая"(приоритет у арифметической прогрессии).

7 янв. 2026 г.166В Telegram

Задача 210Проверка периодичности последовательностиДана последовательность чисел. Определите, является ли она периодической (повторяется ли некий паттерн целиком от начала до конца последовательности). Если да, найдите длину наименьшего периода.Примеры:[1, 2, 1, 2, 1, 2] → true, период 2 (паттерн [1, 2])[1, 2, 3, 1, 2, 3, 1] → true, период 3 (паттерн [1, 2, 3])[1, 2, 3, 1, 2, 4] → false (нет полного повторения паттерна)

6 янв. 2026 г.163В Telegram

Задача 209Генерация всех подмассивов с условиемДан массив чисел. Сгенерируйте все возможные подмассивы, сумма элементов которых не превышает заданное число N. Выведите их в порядке увеличения длины.Пример:массив: [1, 2, 3], N: 4результат: [[1], [2], [3], [1,2], [1,3]](подмассив [2,3] не выводится, так как сумма 5 > 4)

5 янв. 2026 г.180В Telegram

Задача 208Валидация математического выраженияДана строка с математическим выражением, содержащим числа, операторы +-*/ и скобки. Проверьте корректность расстановки операторов: - два оператора не могут стоять подряд - после открывающей скобки не может быть оператора (кроме унарного минуса) - перед закрывающей скобкой не может быть оператора - выражение должно начинаться и заканчиваться числом или скобкойПример:"2*(3+4)-5/2" → true"2*+3" → false

4 янв. 2026 г.168В Telegram

Задача 207Сжатие смежных чиселДан массив чисел. Замените все последовательности смежных одинаковых чисел на их количество и значение.Пример:[1, 1, 1, 2, 3, 3, 4, 4, 4, 4] → [[3, 1], [1, 2], [2, 3], [4, 4]]

3 янв. 2026 г.170В Telegram

Задача 206Конверсия времениДана переменная, содержащая некоторое количество секунд. Получите сколько дней, часов, минут и секунд содержится в этой переменной. Имеется ввиду, что сначала нужно выделить целое количество дней, из остатка выделить целое количество часов, из остатка выделить целое минут, а затем останется количество секунд. Результат представьте в виде ассоциативного массива.

2 янв. 2026 г.186В Telegram

Задача 205Транспонирование матрицыДан произвольный двухмерный массив: [ [11, 12, 13, 14, 15], [21, 22, 23, 24, 25], [31, 32, 33, 34, 35], [41, 42, 43, 44, 45], [51, 52, 53, 54, 55], ]Выполните его транспонирование:[ [11, 21, 31, 41, 51], [12, 22, 32, 42, 52], [13, 23, 33, 43, 53], [14, 24, 34, 44, 54], [15, 25, 35, 45, 55],]

1 янв. 2026 г.179В Telegram