Занимательные задачи PHP
340 subscribers
1 photo
15 links
Ваша цель: решить задачу максимально изящно и просто. Предлагайте свои варианты решения в комментариях. Задачи выходят по будням в 14.00.
Download Telegram
Задача 2
Проверка на похожесть слов

Некоторые слова выглядят одинаково, если заменить русскую букву на английскую и наоборот. Например, русская и английская буквы 'o', а также 'H' и другие, совпадают. Это может создать проблемы на сайте, к примеру, можно зарегистрировать два 'одинаковых' ника с буквами из разных языков и писать от чужого имени.

Напишите функцию, которая сравнивает строки, учитывая язык - строки, написанные буквами разных языков, но выглядящие одинаково, следует признать равными. Для простоты берем только русский и английский языки.
Задача 3
Подсчет цифр в массиве

Дан массив с числами. Подсчитайте количество цифр 3 в данном массиве. Например, в следующем массиве их пять:

[10, 13, 35, 3, 433]
Задача 4
Дата масленницы

Определите дату ближайшей масленницы (последнее воскресенье зимы). Если в этом году она уже была - покажите за следующий год.
Задача 5
Попадание дня в месяц

Дана переменная, содержащая номер дня года от 1 до 366:
$day = 100;

Дана переменная, содержащая год:
$year = 2020;

Напишите код, который узнает в какой месяц года приходится заданный день.
Задача 6
Названия файлов транслитом

Пусть есть папка с файлами, названия которых даны на русском языке. Преобразуйте русский текст в названиях файлов в его транслит.
Конкурс CSS картинок. Тема: Новый Год.
Подведение итогов: 31 декабря. Приглашаются все желающие:)

Подробности тут:
https://vk.com/topic-42967112_50416136

P.S.
На прикрепленном фото скрин работы победителя предыдущего конкурса - Сергея Лазарева. Она анимированная) подробнее рассмотреть работу можно в ветке конкурса (ссылка выше)!
Задача 7
Случайная картинка из папки

В папке лежат файлы картинок. При заходе пользователя на сайт покажите ему случайную картинку из этой папки. Если он обновит страницу или зайдет через некоторое - картинка, показываемая ему, не должна поменяться.
Задача 8
Нарастающее разбиение строки

Дана строка с любыми символами. Для примера пусть будет такая:
'1234567890'

Нужно разбить строку в массив таким образом:
['1', '23', '456', '7890']

И так далее, пока символы в строке не закончатся.
Задача 9
Заглавные буквы в начале предложения

Дан текст. Сделайте заглавной первую букву каждого предложения в этом тексте.
Задача 10
Пересечение строк

Даны две строки. Выведите на экран только те слова, которые содержатся в обеих строках.
Задача 11
Разделение числа на случайную сумму

Дано целое число. Разбейте его на случайное количество целых чисел так, чтобы в сумме они давали это число. Пример: 100 можно разбить на 50+50, или 51+49, или 20+30+50. Количество фрагментов должно быть любым, случайным, сами фрагменты тоже должны быть случайными.
Задача 12
Случайная уникальная строка

Посмотрите на сайт jsfiddle.net и похожие на него. Там при сохранении странице присваивается адрес, состоящий из больших и маленьких букв. При этом адреса не должны повторяться, иначе будет конфликт.

Придумайте идею, как это сделать, и реализуйте функцию, который будет генерировать случайную строку, которая не встречалась ранее.
Задача 13
Календарь текущего месяца

Напишите скрипт, который выводит календирик текущего месяца (квадратный, с днями недели).
Задача 14
Противоположность array_unique

Реализуйте функцию-противоположность array_unique. Наша функция должна оставлять элементы, имеющие дубли.
Задача 15
Корректность времени

Дано время в формате часы:секунды. Проверьте то, что время является корректным: часы от 00 до 23, а минуты от 00 до 59.
Задача 16
Счастливые билеты

Выведите на экран все счастливые билеты. Счастливый билет - это когда сумма первых трех цифр в номере билета равна сумме второй тройки цифр (номер шестизначный). Подсчитайте сколько счастливых билетов существует и какой % они составляют от общего числа билетов.
Задача 17
Половина заглавных букв

Дана строка с маленькими буквами. Сделайте заглавными половину случайных букв этой строки, игнорируя пробелы.
Задача 18
Следующий элемент ряда

Дан ряд: a, b, c ,d ... x, y, z , aa, ab, ac, ... ay, az, ba, bb, ... bz, ... aaz.. Напишите функцию, которая получит следующий элемент по предыдущему.
Задача 19
N-ный знак после запятой

Поделите число 10 на число 7. Найдите 1000-ный знак после запятой у полученной дроби.
Задача 20
Перестановка пар символов

Дана строка '12345678'. Сделайте из нее '21436587'. Строка, конечно же, может быть любой.
Занимательные задачи уходят на каникулы на две недели:)
Всем хорошего нового года!