<?php
$elements = [1, 2, 3];
function factorial($n){
if($n <= 1){
return 1;
} else {
return $n * factorial($n - 1);
}
}
function getCombinations($elements){
//print_r($elements);
if(count($elements) == 1){ return [$elements];
}
$result = [];
foreach($elements as $key => $element){
$first = $element;
$firstKey = $key;
$combinations = getCombinations($elements);
$elements[] = $first;
foreach($combinations as &$combination){
$result[] = $combination;
}
}
return $result;
}
$result = getCombinations($elements);
//print_r($result);
PD9waHAKCmVycm9yX3JlcG9ydGluZygtMSk7CgokZWxlbWVudHMgPSBbMSwgMiwgM107CgpmdW5jdGlvbiBmYWN0b3JpYWwoJG4pewoJaWYoJG4gPD0gMSl7CgkJcmV0dXJuIDE7Cgl9IGVsc2UgewoJCXJldHVybiAkbiAqIGZhY3RvcmlhbCgkbiAtIDEpOwoJfQp9CgpmdW5jdGlvbiBnZXRDb21iaW5hdGlvbnMoJGVsZW1lbnRzKXsKCS8vcHJpbnRfcigkZWxlbWVudHMpOwoJaWYoY291bnQoJGVsZW1lbnRzKSA9PSAxKXsKCQlyZXR1cm4gWyRlbGVtZW50c107Cgl9CgkkcmVzdWx0ID0gW107Cglmb3JlYWNoKCRlbGVtZW50cyBhcyAka2V5ID0+ICRlbGVtZW50KXsKCQkkZmlyc3QgPSAkZWxlbWVudDsKCQkkZmlyc3RLZXkgPSAka2V5OwoJCXVuc2V0KCRlbGVtZW50c1ska2V5XSk7CgkJJGNvbWJpbmF0aW9ucyA9IGdldENvbWJpbmF0aW9ucygkZWxlbWVudHMpOwoJCSRlbGVtZW50c1tdID0gJGZpcnN0OwoJCXByaW50X3IoJGVsZW1lbnRzKTsKCQlmb3JlYWNoKCRjb21iaW5hdGlvbnMgYXMgJiRjb21iaW5hdGlvbil7CgkJCWFycmF5X3Vuc2hpZnQoJGNvbWJpbmF0aW9uLCAkZmlyc3QpOwoJCQkkcmVzdWx0W10gPSAkY29tYmluYXRpb247CgkJfQoKCX0KCXJldHVybiAkcmVzdWx0Owp9CgokcmVzdWx0ID0gZ2V0Q29tYmluYXRpb25zKCRlbGVtZW50cyk7Ci8vcHJpbnRfcigkcmVzdWx0KTs=