نمایش نتایج 1 تا 5 از 5

نام تاپیک: یافتن تعداد حالت های برد افراد

  1. #1

    یافتن تعداد حالت های برد افراد

    سلام من میخوام با php یک کدی ینویسم ولی متاسفانه راهشو نمیدونم
    موضوع اینه که در یک مسابقه چهار نفر در دو بازی با هم بازی دارند
    بطور مثال:
    علی و رضا رقیب یکدیگر هستند
    محمد و حسین هم رقیب یکدیگر هستند
    حالا در این مسابقه چهار حالت ممکنه پیش بیاد
    حالت اول برد علی و محمد
    حالت دوم برد رضا و حسین
    حالت سوم برد علی و حسین
    حالت چهارم برد رضا و محمد

    و هیچ وقت علی و رضا و همین طور محمد و حسین نمیتونن همزمان برنده بشن چون در مقابل هم هستن از هر دو نفر یک نفر برنده میشه

    حالا من میخوام بدونم اگر ۳۰ نفر در ۱۵ تا بازی باهم رقابت کنند چند حالت پیش میاد و اگه میشه حالت های مختلف رو هم بتونم لیست کنم مثلا در حالت اول آقایان a,b,c تا نفر پانزدهم و در حالت دوم آقایان فلان برنده میشوند
    همچین کدی میخوام
    اگر فکر میکنید میتونم تو گوگل پیدا کنم لطفا راهنمایی کنید باید چه عنوانی رو سرچ کنم
    البته خودم php تا حدودی بلدم و اگر کدی بهم بدین ویرایش های لازم رو خودم میتونم انجام بدم ممنون

  2. #2

    نقل قول: یافتن تعداد حالت های برد افراد

    نقل قول نوشته شده توسط faribaqafoori مشاهده تاپیک
    سلام من میخوام با php یک کدی ینویسم ولی متاسفانه راهشو نمیدونم
    موضوع اینه که در یک مسابقه چهار نفر در دو بازی با هم بازی دارند
    بطور مثال:
    علی و رضا رقیب یکدیگر هستند
    محمد و حسین هم رقیب یکدیگر هستند
    حالا در این مسابقه چهار حالت ممکنه پیش بیاد
    حالت اول برد علی و محمد
    حالت دوم برد رضا و حسین
    حالت سوم برد علی و حسین
    حالت چهارم برد رضا و محمد

    و هیچ وقت علی و رضا و همین طور محمد و حسین نمیتونن همزمان برنده بشن چون در مقابل هم هستن از هر دو نفر یک نفر برنده میشه

    حالا من میخوام بدونم اگر ۳۰ نفر در ۱۵ تا بازی باهم رقابت کنند چند حالت پیش میاد و اگه میشه حالت های مختلف رو هم بتونم لیست کنم مثلا در حالت اول آقایان a,b,c تا نفر پانزدهم و در حالت دوم آقایان فلان برنده میشوند
    همچین کدی میخوام
    اگر فکر میکنید میتونم تو گوگل پیدا کنم لطفا راهنمایی کنید باید چه عنوانی رو سرچ کنم
    البته خودم php تا حدودی بلدم و اگر کدی بهم بدین ویرایش های لازم رو خودم میتونم انجام بدم ممنون
    باسلام
    ابتدا نياز است شما برنامه اي كه ميخوايد بنويسيد رو آنلايز كنيد و بصورت چارت براي خودتون رسم كنيد
    به تعداد بازيكن ها ربطي ندارد بستگي دارد شما بخواي در 30 نفر چند نفر برنده بشند فقط كافيه اين رو بدونيد
    براي مثال همان 30 نفر قرار است در 15 مسابقه شركت كنند خوب هر مسابقه بايد بدونيد چندتا برنده ميخواد و اينكه اون نفرات برنده رو بريزيد تو يك ديتابيس از هر مسابقه
    سپس مسابقه بعدي اون تعداد برنده رو كم ميكني دوباره مسابقه انجام ميشه و دوباره مجداا برنده ها ميرن داخل ديتابيس !
    اون چيزي كه شما ميخواي بدوني چند حالت پيش مياد دقيقا از طريق طراحي الگوريتم بدست مي آيد.

  3. #3

    نقل قول: یافتن تعداد حالت های برد افراد

    دوست عزیز شما فقط به یک تابع بازگشتی نیاز دارید.
    شما اول بیاین و این کد رو در کدهاتون بنویسید:
    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, "");

  4. #4

    نقل قول: یافتن تعداد حالت های برد افراد

    https://github.com/milesj/tournament...Tournament.php

    https://www.phpclasses.org/package/1....html#download

    این دوتارو ببین

    می تونی داخل گوگل هم سرچ کنی tournament bracket in php اگر نتیجه نگرفتی به زبان های دیگه سرچ کن شاید سرنخی دستتون اومد

  5. #5

    نقل قول: یافتن تعداد حالت های برد افراد

    دوست عزیز شما فقط به یک تابع بازگشتی نیاز دارید.
    شما اول بیاین و این کد رو در کدهاتون بنویسید:
    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 حالت رو بنویسه!)
    آخرین ویرایش به وسیله ASHKANLAEI : دوشنبه 16 دی 1398 در 10:09 صبح

تاپیک های مشابه

  1. راهنمایی در مورد تعریف تعداد ستون های بیشتر در اکسس 2003
    نوشته شده توسط unforgiven در بخش مطالب مرتبط با بانکهای اطلاعاتی در VB6
    پاسخ: 4
    آخرین پست: یک شنبه 17 بهمن 1395, 18:42 عصر
  2. پاسخ: 6
    آخرین پست: دوشنبه 04 اسفند 1393, 22:14 عصر
  3. پاسخ: 5
    آخرین پست: سه شنبه 18 تیر 1392, 11:56 صبح
  4. پاسخ: 2
    آخرین پست: جمعه 17 شهریور 1391, 07:03 صبح
  5. ایا می توان در تعریف تابع یا رویه ، آرگومانی را اختیاری تعریف کرد
    نوشته شده توسط Developer Programmer در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 3
    آخرین پست: سه شنبه 18 مرداد 1384, 11:09 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •