Рекрутер закончив рассказ, предложила мне в режиме онлайн решить пару задач. Я конечно с таким первый раз столкнулся, но не отказался. Мне нужно было демонстрировать экран и приступить к решению задачи.
Задача: Нужно получить массив чисел сумма которых равно количеству элементов в кубе. На примере станет понятно:
1³ = 1
2³ = 3 + 2
3³ = 7 + 9 + 11
4³ = 13 + 15 + 17 + 19
5³ = 21 + 23 + 25 + 27 + 27
И тд...
Я приступил к решению задачи.
Нужно было сначала возвести число в куб. Никак не могу вспомнить название функции и решил загуглить. И тут рекрутер выдает: "Вы что делаете! Вы гуглите! Все, мы с вами прощаемся!" - и отключается...
Я был возмущен до глубины души. Народ, когда вы в последний раз возводили числа в степень в обычных CRUD задачах? Давным давно, когда был студентом, были такие задачи и название функции конечно забыл. pow( ) . C другой стороны, как программист уровня мидл вероятно должен был запомнить эту функцию.
Но задачу не решить я уже не мог. Это был вызов. И решил через 15 минут. Решил в лоб, без всякой оптимизации и возможно изрядно наговнокодив. Но задачу решил. Ниже приложу код:
=====
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | <?php function threePowstepTwo(int $baseNumber):array { $arNumbers = []; $number3Pow = pow($baseNumber ,3); $step = 2; $i = 0; $isDo = true; while($isDo ){ $i++; $arTemp = []; for($j = 0; $j < $baseNumber; $j++){ $arTemp[] = $i+$step*$j; } if(array_sum($arTemp) == $number3Pow){ $isDo = false; $arNumbers = $arTemp; } } return $arNumbers; } $ar = threePowstepTwo(2); l($ar); $ar = threePowstepTwo(3); l($ar); $ar = threePowstepTwo(4); l($ar); $ar = threePowstepTwo(5); l($ar); $ar = threePowstepTwo(6); l($ar); $ar = threePowstepTwo(7); l($ar); $ar = threePowstepTwo(8); l($ar); $ar = threePowstepTwo(17); l($ar); function l(array $ar){ $sumText = ''; foreach( $ar as $n){ $sumText.= $n.' + '; } echo '<br>'.count($ar).'^3 = '.chop($sumText,'+ '); } |
======
Результат:
2^3 = 3 + 5
3^3 = 7 + 9 + 11
4^3 = 13 + 15 + 17 + 19
5^3 = 21 + 23 + 25 + 27 + 29
6^3 = 31 + 33 + 35 + 37 + 39 + 41
7^3 = 43 + 45 + 47 + 49 + 51 + 53 + 55
8^3 = 57 + 59 + 61 + 63 + 65 + 67 + 69 + 71
17^3 = 273 + 275 + 277 + 279 + 281 + 283 + 285 + 287 + 289 + 291 + 293 + 295 + 297 + 299 + 301 + 303 + 305
Комментариев нет:
Отправить комментарий