Занимательные задачи PHP
353 subscribers
1 photo
15 links
Ваша цель: решить задачу максимально изящно и просто. Предлагайте свои варианты решения в комментариях. Задачи выходят по будням в 14.00.
Download 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 (один элемент всегда чередуется)
Задача 215
Суммирование чисел из файлов

Дана папка с текстовыми файлами. В каждом файле находятся целые числа, разделенные пробелами и переносами строк. Напишите скрипт, который:

1. Прочитает все файлы с расширением .txt в папке
2. Найдет сумму всех чисел из всех файлов
3. Запишет результат в новый файл result.txt

Пример структуры:
file1.txt: "10 20 30"
file2.txt: "5
15
25"
file3.txt: "100 200"

Результат: 10+20+30+5+15+25+100+200 = 405
Файл result.txt: "405"

Примечание: обрабатывайте только файлы с расширением .txt
Задача 216
Поиск самого большого файла

Дана папка с файлами различных типов. Напишите скрипт, который:

1. Найдет самый большой файл в папке по размеру (в байтах)
2. Выведет информацию о нем: имя файла, размер в КБ, расширение
3. Создаст файл largest_file.txt и запишет туда эту информацию

Формат вывода в файл:
"Самый большой файл: имя_файла.расширение
Размер: 1234.56 КБ"

Если несколько файлов имеют одинаковый максимальный размер,
выберите первый найденный.

Примечание: не рассматривайте подпапки, только файлы в текущей папке.
Задача 217
Подсчет файлов по типам в дереве папок

Дана корневая папка с вложенными подпапками. Напишите скрипт, который:

1. Рекурсивно обойдет все подпапки
2. Подсчитает количество файлов по расширениям
3. Запишет результат в файл file_stats.txt

Пример:
Если в папках есть файлы: a.txt, b.txt, c.jpg, d.pdf, e.txt
Результат:
.txt: 3 файла
.jpg: 1 файл
.pdf: 1 файл
Всего файлов: 5

Примечание: файлы без расширения не учитывать.
Задача 218
Поиск дубликатов файлов

Дана корневая папка с вложенными подпапками. Напишите скрипт, который:

1. Рекурсивно обойдет все файлы
2. Найдет файлы-дубликаты (файлы с одинаковым содержимым)
3. Запишет результат в файл duplicates.txt

Формат вывода в файл:
"Группа дубликатов 1:
- /путь/к/файлу1.txt
- /путь/к/файлу2.txt

Группа дубликатов 2:
- /путь/к/image1.jpg
- /путь/к/image2.jpg
- /путь/к/image3.jpg"

Дубликаты определять по хешу содержимого файла (например, MD5).
Файлы с одинаковым хешем считаются дубликатами.

Примечание: не выводить группы из одного файла.
1
Задача 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" должна повторять исходную структуру.

Примечание: файлы должны физически перемещаться, а не копироваться.
2
Задача 220
Нахождение самой длинной последовательности одинаковых символов

Дана строка. Найдите самую длинную последовательность одинаковых символов, идущих подряд, и верните ассоциативный массив ['char' => символ, 'length' => длина].

Примеры:
"aaabbccccd" → ['char' => "c", 'length' => 4]
"пррриивет" → ['char' => "р", 'length' => 3]
"abcde" → ['char' => "a", 'length' => 1] (любой из символов)
"" → ['char' => "", 'length' => 0]

Если несколько последовательностей имеют одинаковую максимальную длину,
верните информацию о первой из них.

Примечание: учитывайте все символы, включая пробелы.
Задача 221
Сумма цифр четных чисел в строке

Дана строка, содержащая слова и числа. Найдите все четные целые числа в строке и вычислите сумму их цифр.

Примеры:
"У меня есть 24 яблока и 36 груш" →
24 (четное) → сумма цифр: 2+4=6
36 (четное) → сумма цифр: 3+6=9
Общий результат: 6+9 = 15

"Цена: 125 рублей, скидка 50%" →
50 (четное) → сумма цифр: 5+0=5
Результат: 5

"Нечетные числа: 11, 33, 55" → нет четных чисел → результат: 0

Примечание: числа могут быть многозначными, но без десятичной точки.
Игнорировать отрицательные числа.
👍1
Задача 222
Сколько раз число встречается в своем квадрате

Дано целое положительное число. Посчитайте, сколько раз цифры этого числа встречаются в цифрах его квадрата.

Примеры:
5 → квадрат 25 → цифры числа: 5, цифры квадрата: 2,5
Цифра 5 встречается 1 раз → результат: 1

12 → квадрат 144 → цифры числа: 1,2, цифры квадрата: 1,4,4
Цифра 1 встречается 1 раз, цифра 2 встречается 0 раз
Сумма: 1+0 = 1 → результат: 1

13 → квадрат 169 → цифры: 1,3 и 1,6,9
Цифра 1 встречается 1 раз, цифра 3 встречается 0 раз
Сумма: 1+0 = 1 → результат: 1

101 → квадрат 10201 → цифры: 1,0,1 и 1,0,2,0,1
Цифра 1 встречается 2 раза, цифра 0 встречается 2 раза, цифра 1 встречается 2 раза
Сумма: 2+2+2 = 6 → результат: 6

Примечание: каждая цифра исходного числа учитывается отдельно.
Если цифра повторяется в исходном числе, она учитывается столько раз,
сколько встречается.
Задача 223
Чередование гласных и согласных

Дано слово (строка на русском языке). Проверьте, чередуются ли в нем гласные и согласные буквы. Игнорируйте регистр букв.

Гласные буквы русского алфавита: а, е, ё, и, о, у, ы, э, ю, я
Остальные буквы считаются согласными (включая мягкий и твердый знаки).

Примеры:
"мама" → м(с), а(г), м(с), а(г) → true (чередуются)
"папа" → п(с), а(г), п(с), а(г) → true (чередуются)
"око" → о(г), к(с), о(г) → true (чередуются)
"дом" → д(с), о(г), м(с) → true (чередуются)
"кот" → к(с), о(г), т(с) → true (чередуются)
"машина" → м(с), а(г), ш(с), и(г), н(с), а(г) → true (чередуются)
"анна" → а(г), н(с), н(с), а(г) → false (две согласные подряд)
"аист" → а(г), и(г), с(с), т(с) → false (две гласные подряд)

Слово из одной буквы всегда удовлетворяет условию.
Пустая строка возвращает true.
НОВИНКА

Канал по математике от Трепачёва:)

В этом канале я буду постить сложные математические задачи, интересные факты, статьи по истории математики,
Программистам также будет полезно!

Заходите:
Канал https://t.me/trepachev_math