линия

Главная

понедельник, 18 июля 2022 г.

Задача на собеседовании или как я провалил его не начав.

 Как то раз, я проходил собеседование в одну довольно интересную компанию. Рекрутер бодро рассказала о планах компании, о продуктах и какая у них замечательная команда разрабатывающая на острие стека передовых технологий. Говорила она много и даже пару раз повторялась и я уже себя представлял частью этой команды. Так и видел себя среди этих крутых ребят обсуждающих GRASP и SOLID .

 Рекрутер закончив рассказ, предложила мне  в режиме онлайн решить пару задач. Я конечно с таким первый раз столкнулся, но не отказался.  Мне нужно было  демонстрировать экран и  приступить к решению задачи.

Задача:  Нужно получить массив чисел сумма которых равно количеству элементов в кубе. На примере станет понятно:

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


Комментариев нет:

Отправить комментарий