Skip to content

Instantly share code, notes, and snippets.

@marinaglancy
Created September 25, 2015 02:33
Show Gist options
  • Save marinaglancy/563c5ad4f57747b8e306 to your computer and use it in GitHub Desktop.
Save marinaglancy/563c5ad4f57747b8e306 to your computer and use it in GitHub Desktop.
<?php
findsum(array(6,5,4,3,2,1),3);
findsum(array(6,5,4,3,2,1),5);
findsum(array(6,5,4,3,2,1),7);
findsum(array(6,5,4,3,2,1),1);
findsum(array(6,5,4,3,2,1),9);
findsum(array(6,5,4,3,2,1),11);
findsum(array(1,2,3,4,5,6,7,8),9);
findsum(array(12,3,4,5,6,7,8),9);
function findsum($numbers, $targetsum) {
$sums = getsums($numbers);
$rv = array();
foreach ($sums as $sum) {
if ($sum[1] == $targetsum) {
$rv[] = $sum[0];
}
}
echo "--------------------- (".join(',',$numbers).") -> $targetsum ----------\n";
echo join("\n",$rv)."\n";
}
function getsums($numbers) {
if (empty($numbers)) {
return array(0);
}
$firstnumber = array_shift($numbers);
$sums = getsums($numbers);
$rv = array();
foreach ($sums as $sum) {
$rv[] = array("+$firstnumber".$sum[0], $firstnumber + $sum[1]);
$rv[] = array("-$firstnumber".$sum[0], -$firstnumber + $sum[1]);
}
return $rv;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment