Техническое задание: Скрипт оценки красивых номеров телефонов

Цель проекта

Разработать на PHP скрипт, который анализирует телефонные номера, оценивает их по критериям "красоты" (повторяющиеся и комбинирующиеся цифры) и автоматически относит каждый номер к одной или нескольким заданным категориям.

Функциональные требования

Скрипт должен принимать на вход телефонный номер и возвращать его оценку, а также список категорий, к которым он принадлежит. Анализ проводится для цифр номера, за исключением первых трех (код оператора или региона).

Категории для классификации

  • Две цифры: Номер содержит две повторяющиеся цифры, которые встречаются не менее двух раз каждая. Пример: 936 555 6666.
  • Три цифры: Номер содержит три повторяющиеся цифры, которые встречаются не менее двух раз каждая. Пример: 925 888 99 22.
  • Красивый хвост: Последние 4 цифры номера являются одинаковыми, парными (например, 44 55) или составляют красивую последовательность (например, 1234, 7575).
  • Парные номера: Скрипт должен уметь находить и группировать номера, которые образуют "пары" по одинаковой концовке (6 или 7 одинаковых идущих подряд цифр). В паре может быть более двух номеров, но они выводятся как последовательные пары. Пример пары: 913 660 60 60 и 905 660 60 60.
  • Похожие номера: Номера, в которых одна, две или три одинаковые цифры повторяются в разном расположении 4-5 и более раз по всему номеру. Точный алгоритм определения требует дополнительного уточнения на основе предоставленного примера.

Требования к реализации

  • Язык программирования: PHP.
  • Код должен быть чистым, хорошо структурированным и с комментариями.
  • Алгоритмы оценки и категоризации должны быть эффективными и масштабируемыми.
  • Для категории "Парные номера" необходимо предусмотреть механизм сравнения и группировки номеров из заданного списка или базы данных.
  • Логика для категории "Похожие" должна быть доработана после изучения предоставленного заказчиком примера.

Результат работы

Скрипт должен выводить для каждого анализируемого номера:

  • Общую оценку "красоты" (например, в баллах или процентах).
  • Список категорий, в которые попадает номер.
  • Для режима поиска "парных номеров" - сгруппированный список совпадающих по окончанию номеров.