Lesson 1 – Time Complexity – TapeEquilibrium demo task solution code written in php. Gives 100/100 score at the time of publishing. The description of the problem is copyrighted, so please see the following link for it: https://codility.com/c/run/demoFKRFBE-5SC
Solution in php:
function solution($A) { $sum1 = $A[0]; $sum2 = array_sum($A) - $sum1; $found = array('index'=>0, 'abs' => abs($sum1 - $sum2)); $c = count($A) - 1; $i = 1; while($i < $c){ $sum1 += $A[$i]; $sum2 -= $A[$i]; $abs = abs($sum1 - $sum2); if($abs < $found['abs']){ $found['index'] = $i; $found['abs'] = $abs; } $i++; } return $found['abs']; }
Given “AS IS”, can be ported from other languages from solutions found on the internet, please use with care.
Please note: we think that codility.com does not give a correct assessment of your real-world programming skills. For instance, reading the below would bring more understanding why: http://codility-test-questions.blogspot.com/2013/01/my-experience-with-codility-test.html
You’re using unnecessary array. Check this out:
function solution($A) {
$keys = count($A);
$left = $A[0];
$right = array_sum($A) – $left;
$min = abs($left – $right);
for ($i = 1; $i < $keys – 1; $i++) {
$left += $A[$i];
$right -= $A[$i];
$diff = abs($left – $right);
$min = ($diff < $min) ? $diff : $min;
}
return $min;
}
(thumbsup)