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

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

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

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

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

<?php

function isPrime($number)
{
    $divider = 2;

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

        $divider += 1;
    }

    return true;
}

isPrime(2); // false

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

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

Задание

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

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

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

<?php

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

Exercise available only for signed users