Advertisement
Guest User

Very Slow Solution to is_summable() func

a guest
Aug 13th, 2012
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.10 KB | None | 0 0
  1. <?php
  2. function is_summable($numbers, $sum) {
  3.     //Sort provided numbers and assign numerical keys.
  4.     asort($numbers);
  5.     $numbers = array_values($numbers);
  6.  
  7.     //Var for additions and var for number of provided numbers.
  8.     $total = 0;
  9.     $numbers_length = count($numbers);
  10.  
  11.     //Empty var to fill below.
  12.     $code = '';
  13.  
  14.     //Loop and add for() loops.
  15.     for ($i = 0; $i < $numbers_length; $i++) {
  16.         $code .= 'for ($n' . $i . ' = 0; $n' . $i . ' < ' . $numbers_length . '; $n' . $i . '++) {';
  17.  
  18.         if ($i != 0) {
  19.             $code .= 'if ($n' . $i . ' != $n' . ($i - 1) . ') {';
  20.         }
  21.  
  22.         $code .= '$total += intval($numbers[$n' . $i . ']);';
  23.         $code .= 'if ($total == $sum) {';
  24.         $code .= 'return true;';
  25.         $code .= '}';
  26.     }
  27.  
  28.     //Add ending bracket for for() loops above.
  29.     for ($l = 0; $l < $numbers_length; $l++) {
  30.         $code .= '$total -= intval($numbers[$n' . $i . ']);';
  31.         if ($l != 0) {
  32.             $code .= '}';
  33.         }
  34.         $code .= '}';
  35.     }
  36.  
  37.     //Finally, eval the code.
  38.     eval($code);
  39.  
  40.     //If "true" not returned above, return false.
  41.     return false;
  42. }
  43.  
  44. $num_arr = array(1,2,3,4,5,6,7,8,9);
  45. var_dump(is_summable($num_arr, 24));
  46. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement