Wpis z 20.02.2023, autor Andrzej Mazur · Code in sandbox · Subskrybuj LekcjePHP na Youtube
Dla danej tablicy liczb całkowitych, zwróć nową tablicę, aby każdy element o indeksie i nowej tablicy był iloczynem wszystkich liczb w oryginalnej tablicy oprócz tej o i.
Dla danej tablicy liczb całkowitych, zwróć nową tablicę, aby każdy element o indeksie i nowej tablicy był iloczynem wszystkich liczb w oryginalnej tablicy oprócz tej o i. Na przykład, jeśli naszym wejściem było [1, 2, 3, 4, 5], oczekiwanym wynikiem byłoby [120, 60, 40, 30, 24]. Jeśli naszym wejściem było [3, 2, 1], oczekiwanym wyjściem byłoby [2, 3, 6]. Dalsza część: co jeśli nie możesz użyć dzielenia?
(orginał ang.) Given an array of integers, return a new array such that each element at index i of the new array is the product of all the numbers in the original array except the one at i. For example, if our input was [1, 2, 3, 4, 5], the expected output would be [120, 60, 40, 30, 24]. If our input was [3, 2, 1], the expected output would be [2, 3, 6].
Follow-up: what if you can't use division?
Nieco zdziwiło mnie oznaczenie tego zadania jako [Hard], bo jego poziom jest co najwyżej jeden krok, od zadań podstawowych.
Jedyna trudność o zbadanie warunków brzegowych. I pojawienie są zera w danych wejściowych!
$a = [1, 2, 3, 4, 5]; // => [120, 60, 40, 30, 24]
$b = [3, 2, 1]; // => [2, 3, 6]
function productOfArrElements($a) {
$result = [];
foreach ($a as $v) {
$diff = array_diff($a, [$v]);
$times = array_product($diff);
$result[] = $times;
}
return $result;
}
$r = productOfArrElements($a);
print_r($r);
$r = productOfArrElements($b);
print_r($r);
Oczywiście całość można skrócić zapisując funkcję productOfArrElements()
w postaci:
function productOfArrElements($a) {
$result = [];
foreach ($a as $v) $result[] = array_product(array_diff($a, [$v]));
return $result;
}
Materiał przygotował dla Was:
Andrzej EZNAWCA Mazur
Zapraszam na moje strony:
LekcjePHP.pl
Eznawca.pl