<?php
function sampling
($days, $size, $combinations = array()) {
# if it's the first iteration, the first set
# of combinations is the same as the set of characters
if (empty($combinations)) { $combinations = array_map(function($day) { return array($day); }, $days); }
# we're done if we're at size 1
if ($size == 1) {
return $combinations;
}
# initialise array to put new values in
$new_combinations = array();
# loop through existing combinations and character set to create strings
foreach ($combinations as $combination) {
foreach ($days as $day) {
$new_combination = $combination;
$new_combination[] = $day;
$new_combinations[] = $new_combination;
}
}
}
# call same function again for the next iteration
return sampling($days, $size - 1, $new_combinations);
}
$days = array('Monday', 'Tuesday', 'Thursday');
PD9waHAKCmZ1bmN0aW9uIHNhbXBsaW5nKCRkYXlzLCAkc2l6ZSwgJGNvbWJpbmF0aW9ucyA9IGFycmF5KCkpIHsKCiAgICAjIGlmIGl0J3MgdGhlIGZpcnN0IGl0ZXJhdGlvbiwgdGhlIGZpcnN0IHNldCAKICAgICMgb2YgY29tYmluYXRpb25zIGlzIHRoZSBzYW1lIGFzIHRoZSBzZXQgb2YgY2hhcmFjdGVycwogICAgaWYgKGVtcHR5KCRjb21iaW5hdGlvbnMpKSB7CiAgICAgICAgJGNvbWJpbmF0aW9ucyA9IGFycmF5X21hcChmdW5jdGlvbigkZGF5KSB7IHJldHVybiBhcnJheSgkZGF5KTsgfSwgJGRheXMpOwogICAgfQoKICAgICMgd2UncmUgZG9uZSBpZiB3ZSdyZSBhdCBzaXplIDEKICAgIGlmICgkc2l6ZSA9PSAxKSB7CiAgICAgICAgcmV0dXJuICRjb21iaW5hdGlvbnM7CiAgICB9CgogICAgIyBpbml0aWFsaXNlIGFycmF5IHRvIHB1dCBuZXcgdmFsdWVzIGluCiAgICAkbmV3X2NvbWJpbmF0aW9ucyA9IGFycmF5KCk7CgogICAgIyBsb29wIHRocm91Z2ggZXhpc3RpbmcgY29tYmluYXRpb25zIGFuZCBjaGFyYWN0ZXIgc2V0IHRvIGNyZWF0ZSBzdHJpbmdzCiAgICBmb3JlYWNoICgkY29tYmluYXRpb25zIGFzICRjb21iaW5hdGlvbikgewogICAgICAgIGZvcmVhY2ggKCRkYXlzIGFzICRkYXkpIHsKICAgICAgICAgICAgaWYgKCFpbl9hcnJheSgkZGF5LCAkY29tYmluYXRpb24pKSB7CiAgICAgICAgICAgICAgICAkbmV3X2NvbWJpbmF0aW9uID0gJGNvbWJpbmF0aW9uOwogICAgICAgICAgICAgICAgJG5ld19jb21iaW5hdGlvbltdID0gJGRheTsKICAgICAgICAgICAgICAgICRuZXdfY29tYmluYXRpb25zW10gPSAkbmV3X2NvbWJpbmF0aW9uOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgY2FsbCBzYW1lIGZ1bmN0aW9uIGFnYWluIGZvciB0aGUgbmV4dCBpdGVyYXRpb24KICAgIHJldHVybiBzYW1wbGluZygkZGF5cywgJHNpemUgLSAxLCAkbmV3X2NvbWJpbmF0aW9ucyk7Cn0KCiRkYXlzID0gYXJyYXkoJ01vbmRheScsICdUdWVzZGF5JywgJ1RodXJzZGF5Jyk7CgpwcmludF9yKHNhbXBsaW5nKCRkYXlzLCAyKSk7CnByaW50X3Ioc2FtcGxpbmcoJGRheXMsIDMpKTs=