Возврат из циклов

Работа с циклами обычно сводится к двум сценариям:

  1. Накопление результата во время итераций и работа с ним после цикла. Переворот строки как раз относится к такому варианту.
  2. Выполнение цикла до достижения необходимого результата и выход. Например, задача поиска простых чисел. Напомним, что простое число — это число, которое делится без остатка только на себя и на единицу.

Рассмотрим простой алгоритм проверки простоты числа. Будем делить искомое число x на все числа от двух до x - 1 и смотреть остаток. Если остаток от деления никогда не равен нулю, значит перед нами простое число.

Если задуматься, то можно заметить, что достаточно проверять числа не до x - 1, а до половины числа. Например, 11 не делится на 2, 3, 4, 5. Но и дальше гарантированно не будет делиться на числа больше своей половины. Значит, можно провести небольшую оптимизацию и проверять деление только до x / 2.

<?php

function isPrime($number)
{
    if ($number < 2) {
        return false;
    }

    $divider = 2;

    while ($divider <= $number / 2) {
        if ($number % $divider === 0) {
            return false;
        }

        $divider += 1;
    }

    return true;
}

isPrime(1); // false
isPrime(2); // true
isPrime(3); // true
isPrime(4); // false

Алгоритм построен таким образом, что если во время последовательного деления на числа до x / 2 находится хоть одно, которое делит без остатка, то переданный аргумент — не простое число, а значит дальнейшие вычисления не имеют смысла. В этом месте стоит возврат false.

И только если цикл отработал целиком, можно сделать вывод, что число — простое, так как не было найдено ни одного числа, которое делит число без остатка.

Задание

Реализуйте функцию doesContain, которая проверяет (с учётом регистра), содержит ли строка указанную букву. Функция принимает два параметра:

  • Строка
  • Буква для поиска

Пример вызова:

<?php

doesContain('Renly', 'R'); // true
doesContain('Renly', 'r'); // false
doesContain('Tommy', 'm'); // true
doesContain('Tommy', 'd'); // false

Советы

Упражнение доступно только авторизованным пользователям.

Пожалуйста, авторизуйтесь с помощью учётной записи GitHub, это необходимо для отслеживания прогресса выполнения уроков. Если у вас ещё нет учётной записи, то сейчас самое время создать аккаунт на GitHub.