3v4l.org

run code in 300+ PHP versions simultaneously
<?php function doLoad(array $weights, $remainingWeight, array $sequence = []) { if ($remainingWeight === 0) { return [$sequence]; } if (empty($weights)) { return []; } $container = array_shift($weights); $sequences = doLoad($weights, $remainingWeight, $sequence); if ($container <= $remainingWeight) { $sequence[] = $container; $sequences = array_merge($sequences, $this->doLoad($weights, ($remainingWeight - $container), $sequence)); } return $sequences; } $weights = [ 1, 3, 5, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113 ]; var_dump(doLoad($weights, 381));

preferences:
55.13 ms | 402 KiB | 5 Q