دوست عزیز شما فقط به یک تابع بازگشتی نیاز دارید.
شما اول بیاین و این کد رو در کدهاتون بنویسید:
function winners($a, $n, $bs) {
foreach ($a[$n] as $val) {
if (count($a) == $n + 1)
echo $bs . $val . "(بزارین برای این ننوشتم که این ویرایشگر سایت خودکار پاکش میکنه br این جا تگ)";
else
winners($a, $n + 1, $bs . $val . ", ");
}
}
سپس باید یک آرایه تعریف کنید که نام ها به شکل جفت جفت داخلش نوشته شده باشن (هر جفت بازیکن مقابل هم) مثل این:
$arr = [
[1, 2],
[3, 4],
[5, 6]
];
حالا تنها کار لازم اینه که بیاین و این تابع رو فراخوانی کنید (پارامتر ها به ترتیب: نام آرایه، 0 (همیشه صفر) و یک رشته خالی (این هم همیشه خالیه!)):
winners($arr, 0, "");
پاسخی که در صفحه نشون داده میشه:
1, 3, 5
1, 3, 6
1, 4, 5
1, 4, 6
2, 3, 5
2, 3, 6
2, 4, 5
2, 4, 6
فقط دقت داشته باشید برای هر n جفت (در اینجا 3 جفت) به تعداد 2 به توان n حالت برد داریم. و از اون جایی که این کد از تابع بازگشتی استفاده کرده، پس برای مقادیر بالای 10 به مدت زمان زیادی احتیاج داره. (برای 30 جفت باید 32768 حالت رو بنویسه!)