Equilibrium index: Difference between revisions
new task |
added php |
||
Line 27: | Line 27: | ||
Assume that the sequence may be very long. |
Assume that the sequence may be very long. |
||
=={{header|PHP}}== |
|||
<lang php><?php |
|||
$arr = array(-7, 1, 5, 2, -4, 3, 0); |
|||
$res = array(); |
|||
$sum = 0; |
|||
foreach ($arr as $v) $sum += $v; |
|||
$left = 0; |
|||
$right = $sum; |
|||
foreach ($arr as $i => $v) |
|||
{ |
|||
$right -= $v; |
|||
if ($left == $right) |
|||
{ |
|||
$res[] = $i; |
|||
} |
|||
$left += $v; |
|||
} |
|||
echo "# results:\n"; |
|||
foreach ($res as $r) |
|||
{ |
|||
echo " $r"; |
|||
} |
|||
echo "\n"; |
|||
?></lang> |
Revision as of 09:16, 23 September 2010
Equilibrium index of a sequence is an index such that the sum of elements at lower indexes is equal to the sum of elements at higher indexes. For example, in a sequence A:
A[0] = -7 A[1] = 1 A[2] = 5 A[3] = 2 A[4] = -4 A[5] = 3 A[6] = 0
3 is an equilibrium index, because:
A[0] + A[1] + A[2] = A[4] + A[5] + A[6]
6 is also an equilibrium index, because:
A[0] + A[1] + A[2] + A[3] + A[4] + A[5] = 0
(sum of zero elements is zero)
7 is not an equilibrium index, because it is not a valid index of sequence A.
Write a function that, given a sequence, returns its equilibrium index (any) or raises an exception if no equilibrium indexes exist.
Assume that the sequence may be very long.
PHP
<lang php><?php $arr = array(-7, 1, 5, 2, -4, 3, 0); $res = array();
$sum = 0; foreach ($arr as $v) $sum += $v;
$left = 0; $right = $sum; foreach ($arr as $i => $v) {
$right -= $v; if ($left == $right) { $res[] = $i; } $left += $v;
}
echo "# results:\n"; foreach ($res as $r) {
echo " $r";
} echo "\n"; ?></lang>