Задача 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" должна повторять исходную структуру.Примечание: файлы должны физически перемещаться, а не копироваться.
Занимательные задачи PHP
@php_tricker
Ваша цель: решить задачу максимально изящно и просто. Предлагайте свои варианты решения в комментариях. Задачи выходят по будням в 14.00.
Похожие каналы
Все →Последние посты
Задача 218Поиск дубликатов файловДана корневая папка с вложенными подпапками. Напишите скрипт, который:1. Рекурсивно обойдет все файлы2. Найдет файлы-дубликаты (файлы с одинаковым содержимым)3. Запишет результат в файл duplicates.txtФормат вывода в файл:"Группа дубликатов 1:- /путь/к/файлу1.txt- /путь/к/файлу2.txtГруппа дубликатов 2:- /путь/к/image1.jpg- /путь/к/image2.jpg- /путь/к/image3.jpg"Дубликаты определять по хешу содержимого файла (например, MD5).Файлы с одинаковым хешем считаются дубликатами.Примечание: не выводить группы из одного файла.
Задача 217Подсчет файлов по типам в дереве папокДана корневая папка с вложенными подпапками. Напишите скрипт, который:1. Рекурсивно обойдет все подпапки2. Подсчитает количество файлов по расширениям3. Запишет результат в файл file_stats.txtПример:Если в папках есть файлы: a.txt, b.txt, c.jpg, d.pdf, e.txtРезультат: .txt: 3 файла.jpg: 1 файл.pdf: 1 файлВсего файлов: 5Примечание: файлы без расширения не учитывать.
Задача 216Поиск самого большого файлаДана папка с файлами различных типов. Напишите скрипт, который:1. Найдет самый большой файл в папке по размеру (в байтах)2. Выведет информацию о нем: имя файла, размер в КБ, расширение3. Создаст файл largest_file.txt и запишет туда эту информациюФормат вывода в файл:"Самый большой файл: имя_файла.расширениеРазмер: 1234.56 КБ"Если несколько файлов имеют одинаковый максимальный размер,выберите первый найденный.Примечание: не рассматривайте подпапки, только файлы в текущей папке.
Задача 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
Задача 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 (один элемент всегда чередуется)
Задача 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Этот процесс иногда называют "цифровым корнем" числа.
Задача 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] (массив не изменился)
Задача 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)Примечание: если массив подходит под оба типа, верните "арифметическая"(приоритет у арифметической прогрессии).
Задача 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 (нет полного повторения паттерна)
Задача 209Генерация всех подмассивов с условиемДан массив чисел. Сгенерируйте все возможные подмассивы, сумма элементов которых не превышает заданное число N. Выведите их в порядке увеличения длины.Пример:массив: [1, 2, 3], N: 4результат: [[1], [2], [3], [1,2], [1,3]](подмассив [2,3] не выводится, так как сумма 5 > 4)
Задача 208Валидация математического выраженияДана строка с математическим выражением, содержащим числа, операторы +-*/ и скобки. Проверьте корректность расстановки операторов: - два оператора не могут стоять подряд - после открывающей скобки не может быть оператора (кроме унарного минуса) - перед закрывающей скобкой не может быть оператора - выражение должно начинаться и заканчиваться числом или скобкойПример:"2*(3+4)-5/2" → true"2*+3" → false
Задача 207Сжатие смежных чиселДан массив чисел. Замените все последовательности смежных одинаковых чисел на их количество и значение.Пример:[1, 1, 1, 2, 3, 3, 4, 4, 4, 4] → [[3, 1], [1, 2], [2, 3], [4, 4]]
Задача 206Конверсия времениДана переменная, содержащая некоторое количество секунд. Получите сколько дней, часов, минут и секунд содержится в этой переменной. Имеется ввиду, что сначала нужно выделить целое количество дней, из остатка выделить целое количество часов, из остатка выделить целое минут, а затем останется количество секунд. Результат представьте в виде ассоциативного массива.
Задача 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],]