Pavel SE

Ну подскажите, пожалуйста, что ему не нравится?

There was 1 error:

1) App\TestSolution::testAddDigits with data set #6 (8, 1259)
Uninitialized string offset: 2

/usr/src/app/Solution.php:20
/usr/src/app/SolutionTest.php:16

--

There were 2 failures:

1) App\TestSolution::testAddDigits with data set #0 (0, 0)
Failed asserting that 1 matches expected 0.

/usr/src/app/SolutionTest.php:16

2) App\TestSolution::testAddDigits with data set #2 (9, 9)
Failed asserting that 1 matches expected 9.

/usr/src/app/SolutionTest.php:16

FAILURES!
Tests: 7, Assertions: 6, Errors: 1, Failures: 2.
make: *** [test] Error 2
make: Leaving directory `/usr/src/app'
Run failed! Check and fix errors above!

код такой:

function addDigits($num = '')
{   
    $new_num = "$num";
    $result = 0;
    $len = strlen($new_num) - 1;

    if ($len == 0){
        return $result = 1;
    } else {
        for (; ; ){         
            for ($i = 0; $i <= $len; $i++){
                $result += $new_num{$i};
            }

            if (strlen($result)  <= 1){
                return $result;
            } else {
                $new_num = "$result";
                $result = 0;
            }
        }
    }   
}

3 0

Uninitialized string offset: 2

/usr/src/app/Solution.php:20

Судя по переводу, вы обращаетесь к символу в строке за пределами строки (например строка состоит из 5 символов, а вы пытаетесь обратиться к 8 символу). Чтобы легко отлаживать такие ошибки, надо строчку Uninitialized string offset копировать в гугл и вам покажут тыщи вариантов.

0

Все таки победил ее

while($num >= 10){  
        $num = (string)$num;
        $nnum = (int)$num{0} + (int)$num{1};
        $num{0} = 0;
        $num{1} = 0;
        $num .= $nnum;
        $num = (int)$num;
}

Кирилл, простите, но кажется о функции str_split() в лекциях нигде не сказано. Вы не могли бы упомянуть ее в подсказках к заданию?

0

Спасибо, добавил в описание.

1

Похожие вопросы

Andrey Lozhechnik 24 июня 2018 →

Привет всем, прошу помощи ! ``` <?php namespace App\Solution; // BEGIN (write your solution here) function ...

Александр Гомон 19 мая 2018 →

Что у меня не так? Подскажите пожалуйста. // removed

Vladislav Shevtsov 24 апреля 2018 →

При нажатии на кнопку "Далее" после видео-урока регулярно происходит зависание, нет перехода к заданию и сб...

Максим Торбург 05 февраля 2018 →

То чувство, когда долго мучился, пытаясь разобраться и использовать рекомендованные функции, а потом пошел ...

Максим Торбург 05 февраля 2018 →

Как вариант, мне кажется, еще тайп хинтинг может помочь поймать ошибку быстрее на рантайме, если функция не...

Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →