PHP: Агрегация данных (Строки)

Агрегация применяется не только к числам, но и к строкам. Это такие задачи, в которых строка формируется динамически — то есть заранее неизвестно, какого она размера и что будет содержать.

Представьте себе функцию, которая умеет умножать строку, то есть повторять ее указанное количество раз:

<?php

repeat('hexlet', 3); // 'hexlethexlethexlet'

Принцип работы этой функции довольно простой — в цикле происходит «наращивание» строки указанное количество раз:

<?php

function repeat($text, $times)
{
    // Нейтральный элемент для строк – пустая строка
    $result = '';
    $i = 1;

    while ($i <= $times) {
        // Каждый раз добавляем строку к результату
        $result = "{$result}{$text}";
        $i = $i + 1;
    }

    return $result;
}

Распишем выполнение этого кода по шагам:

<?php

// Для вызова repeat('hexlet', 3);
$result = '';
$result = "{$result}hexlet"; // hexlet
$result = "{$result}hexlet"; // hexlethexlet
$result = "{$result}hexlet"; // hexlethexlethexlet

Задание

Реализуйте функцию joinNumbersFromRange(), которая объединяет все числа из диапазона в строку:

<?php

joinNumbersFromRange(1, 1); // '1'
joinNumbersFromRange(2, 3); // '23'
joinNumbersFromRange(5, 10); // '5678910'
Как с вами связаться? 🙃

Команда проекта находится в телеграм-сообществе по ссылке https://ttttt.me/HexletLearningBot. Там можно задать любой вопрос и повлиять на проект

Упражнение не проходит проверку — что делать? 😶

Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "Обсуждение". Как правильно задать вопрос:

В моей среде код работает, а здесь нет 🤨

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Мой код отличается от решения учителя 🤔

Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Прочитал урок — ничего не понятно 🙄

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

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются

Привет! Я Тота и моя задача помочь в обучении. Чтобы активировать меня, нужно зарегистрироваться или залогиниться, если у вас уже есть аккаунт

Loading...

Ваше упражнение проверяется по этим тестам

1<?php
2
3namespace HexletBasics\Loops\AgregationString;
4
5use PHPUnit\Framework\TestCase;
6
7class SolutionTest extends TestCase
8{
9    public function test()
10    {
11        require 'index.php';
12
13        $this->assertEquals('2', joinNumbersFromRange(2, 2));
14        $this->assertEquals('12345', joinNumbersFromRange(1, 5));
15        $this->assertEquals('101112', joinNumbersFromRange(10, 12));
16    }
17}
18

Решение учителя откроется через:

20:00
waiting_clock