tasks_from_interview - PHP Online

Form of PHP Sandbox

Enter Your PHP code here for testing/debugging in the Online PHP Sandbox. As in the usual PHP files, you can also add HTML, but do not forget to add the tag <?php in the places where the PHP script should be executed.



Your result can be seen below.

Result of php executing





Full code of tasks_from_interview.php

  1. <?php
  2.  
  3. // Реализуй метод, определяющий, является ли одна строка перестановкой другой. 
  4. // Под перестановкой понимаем любое изменение порядка символов.
  5. // Результатом функции должно быть булевское значение TRUE или FALSE
  6. // Нельзя использовать функции сортировки.
  7. function f2(string $str1, string $str2):bool 
  8. {
  9.         $str1 = str_split($str1);
  10.         $str2 = str_split($str2);
  11.  
  12.         if(count($str1) != count($str2)){
  13.             return false;
  14.         }
  15.        
  16.         $result = array_diff($str1, $str2);
  17.        
  18.         if(!$result){
  19.             return true;
  20.         }
  21.         else {
  22.             return false;
  23.     }
  24.     
  25. }
  26.  
  27. // Дано натуральное число N. Реализуйте рекурсивную функцию которая 
  28. // определит является ли число N точной степенью двойки.
  29. // Фукнция должна принимать 1 аргумент, натуральное число N
  30. // Результатом функции должно быть булевское значение TRUE или FALSE
  31. // isPowerOfTwo(64) = true
  32.  
  33.  
  34.  
  35. function isPowerOfTwo(int $n):bool 
  36. {
  37.     if($n==2){
  38.         return true;
  39.     }
  40.     else if($n%2 == 0){
  41.        return  isPowerOfTwo($n/2);
  42.     }
  43.     else {
  44.         return false;
  45.     }
  46. }
  47.  
  48. // Напиши функцию, которая сортирует массив чисел по возрастанию любым способом. 
  49. // Нельзя использовать встроенные в язык функции сортировки.
  50. // Результатом функции должен быть отсортированный массив
  51. // mysort([9,4,1,5]) -> [1, 4, 5, 9]
  52. function mysort(array $arr): array 
  53. {
  54.     for($j = 0; $j<count($arr)-1; $j++)
  55.     {
  56.         for ($i = 0; $i<count($arr)-1; $i++){
  57.             if($arr[$i]>$arr[$i+1]){
  58.                 array_swap($arr, $i, $i+1);
  59.             }
  60.         }
  61.     }
  62.     return $arr;
  63. }
  64.  
  65. function array_swap(array &$arr, $key1, $key2):bool
  66. {
  67.     if(isset($arr[$key1]) &&  isset($arr[$key2])){
  68.         list($arr[$key1], $arr[$key2]) = array($arr[$key2], $arr[$key1]);
  69.         return true;
  70.     }
  71.     
  72.     return false;
  73. }
  74.  
  75. // Реализуй рекурсивную функцию, которая вычисляет cумму цифр заданного числа.
  76. // Фукнция должна принимать 1 аргумент, натуральное число N.
  77. // При решении этой задачи нельзя использовать строки, массивы.
  78. // Результатом функции должно быть натуральное число
  79. // sumOfNumbers(1502) = 8
  80. function sumOfNumbers(int $n): int 
  81. {
  82.     if ($n < 10) return $n;
  83.     else return $n%10 + sumOfNumbers($n/10);
  84. }
  85.  
  86. // Реализуй алгоритм, обнаруживающий в массиве все пары целых чисел, 
  87. // сумма которых равна заданному значению.
  88. // Результатом функции должен быть массив содержащий в себе найденные пары
  89. // pairs([2,4,5,7,1,3,8], 9)  ->  [[2,7], [4,5], [1,8]]
  90. function pairs(array $arr, int $sum): array
  91. {
  92.     $arr = mysort($arr);
  93.     
  94.     $first = 0;
  95.     $last = count($arr) - 1;
  96.     $res_arr = [];
  97.     
  98.     while($first < $last){
  99.         $res_sum  = $arr[$first] + $arr[$last];
  100.         if ($res_sum == $sum) {
  101.             array_push($res_arr, [$arr[$first], $arr[$last]]);
  102.             $first++;
  103.             $last--;
  104.         } else {
  105.             if ($res_sum < $sum) $first++;
  106.             else $last--;
  107.         }
  108.     }
  109.     
  110.     return $res_arr;
  111. }
  112.  
  113.  
  114.  
File Description
  • tasks_from_interview
  • PHP Code
  • 29 Apr-2022
  • 3.7 Kb
You can Share it: