الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

لغز: أريد أن أفوز

بدأه caballero في 5 سبتمبر 2010 · 18 رد · 5,018 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لغز عيد الفطر لهذه السنة :) لحله ستحتاج إلى مهاراتك البرمجية أكثر من الرياضية.

قبل أن أبدأ، قواعد لعبة اليانصيب هذه غير موجودة، و هي من إبتكار صاحب اللغز فقط.

حكم القمار في الإسلام معروف للجميع، وأنا لا أدعو له. هذا لغز فقط لا غير.

هذه قواعد لعبة يانصيب:

لدينا داخل صندوق 9 كرات، مرقمة من 1 إلى 9. وبالطبع، الكرات متماثلة ولا يمكن التمييز بينها باللمس، وسحبها يتم بطريقة متساوية الإحتمالات.

للمشاركة في اللعبة، يجب على اللاعب وضع علامات على 6 أرقام في بطاقة تحتوي على جميع الأرقام من 1 إلى 9.

بعدها يسحب منظم المسابقة 3 كرات من الصندوق في آن واحد.

للفوز، يجب على المتسابق أن يكون وضع علامات على تلك الأرقام الثلاثة.

سهلة، أليس كذلك؟

لكنني لا أحب الخسارة. ولا أريد أن أضيع وقتي في حساب إحتمالات صعبة. أريد أن أفوز حتما، وبأقل تكلفة ممكنة.

السؤال: ما هو أقل عدد للبطاقات التي يجب علي أن أملأها حتى أضمن الفوز مئة بالمئة؟ وما هي أرقام تلك البطاقات؟

للإجابة، أرجو منكم إرسال العدد الدنوي، بالإضافة إلى لائحة الارقام الستة التي يجب أن أضع علامة عليها في كل بطاقة. مثلا:

2-4-9-7-8-5

3-6-8-2-1-9

8-9-5-3-7-4

...

بكل تأكيد، يوجد عدد دنوي للبطاقات، في حين محتواها سيتغير لا محالة.

يكفي أن تبعث لي مجموعة واحدة من البطاقات الكافية للفوز.

أرجو منك إرسال إجابتك على الخاص، ثم إضافة مشاركة في هذا الموضوع تذكر فيها إرسالك للحل.

سأعلن النتائج بعد بضعة أيام.

بحثا موفقا،، :)

تم تعديل هذه المشاركة بواسطة caballero في 5 سبتمبر 2010 في 20:13

5

MPSI/MP* - CPR Tanger

#2

تم الإرسال على الخاص

1
#3

السلام عليكم

ممكن توضيح أكثر للغز

الوضح لدي للآن أن المتسابق سيضع علامة على ست أرقام و السحب سيكون لثلاثة أرقام عملياً

كما ان السحب بدون ارجاع فلا يمكن أن يتكرر ذات الرقم المسحوب مرة أخرى

ولكن سؤالي

هل من الواجب أن تكون الأرقام الثلاثة المسحوبة يوجد عليها علامات في بطاقة واحدة حصراً

أم من الممكن أن يكون الرقم الأول مثلاً في البطاقة الأولى و الرقم الثاني و الثالث في البطاقة الثانية؟

لأنه في الحالة الأخيرة لا يحتاج لأمر لدراسة أية احتمالات

لذلك أردت الاستيضاح أكثر عن اللغز لو سمحت طبعاً أخي

وجزاك الله خيراً

تم تعديل هذه المشاركة بواسطة MoHaMMaD Pro في 6 سبتمبر 2010 في 05:42

Everything will be fine when we TALK LESS, DO MORE


#4

وعليكم السلام

أخي الفاضل Speed_Of_Light

أشكرك على مشاركتك.

رجاء تفقد رسائلك الخاصة.

أخي الكريم MoHaMMaD Pro

بالفعل، يجب أن تكون الأرقام الثلاثة الرابحة من ضمن الستة أرقام التي إختارها المتسابق في بطاقة واحدة.

أعتذر عن الإلتباس :)

خالص التقدير،،

MPSI/MP* - CPR Tanger

#5

تم ارسال حل على الخاص

1

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

#6

تم الإرسال على الخاص ..

1

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#7

أخي الكريم عماد

أخي الكريم هيثم

أشكركما على مشاركتكما.

رجاء تفقدا البريد الخاص.

تم تعديل هذه المشاركة بواسطة caballero في 6 سبتمبر 2010 في 17:39

MPSI/MP* - CPR Tanger

#8

تم التعديل :sleep:

1

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#9

تم الارسال إلى الخاص

1

Everything will be fine when we TALK LESS, DO MORE


#10

وعليكم السلام

تم إرسال الحل على الخاص

1
#11

عيد مبارك سعيد وكل عام وأنتم بألف خير

أعاده الله علينا وعليكم بالخير واليمن والبركات

لغز هذه المرة كان صعبا، يماثل في صعوبته لغز 36 شمعة، مع أن قواعد هذه اللعبة أسهل. في النسخة الأصلية من لعبة اليانصيب، نختار 6 أرقام من بين 49 رقم، ونسحب 6 أرقام. الصعوبة تزداد ويصبح الفوز بعيد المنال. أظن أن القوانين تغيرت الآن.

الحل المطلوب:

7 بطاقات

من توصل إلى الحل:

HGB

عماد حمدي احمد

hfsh80

باقي المشاركين إقتربوا كثيرا من الحل، وتوصلوا إلى نتائج جيدة.

أشكركم على المشاركة.. وأرجو منكم أن تضعوا في هذا الموضوع طريقة توصلكم للحل، حتى تعم الفائدة.

خالص التقدير،، :)

MPSI/MP* - CPR Tanger

#12

ياريت أن يضع كل حله مع شرح بسيط لطريقة الحل لتعم الفائدة , فقد تكون الإجابة بطريقة مختلفة بين شخص وآخر ومنطق التفكير مختلف .. أضع مالدي بعد قليل ..

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#13

اعرف أن لدينا 84 إحتمال في 6 خانات لكل التوافيق الممكنة للبطاقات .. قمت بإستخراجها .. وأريد ان أختار منهم عدد x حاليا "7" بحيث لايكون هناك أي رقم من الثلاث كرات خارجهم , يعني من توافيق التسعة مع الثلاثة ..

فتخيل أنني سأجرب من الأسفل 4 بطاقات ولا توجد نتيجة 5 أيضا لاتوجد 6 كنت اعول عليها لكن لم أجد أيضا وأقرب شيء في 6 بطاقات كان يعطي 80 إحتمال وتبقى فقط 4 مفقودة .. السبعة بإرتياح تجد عدد كبير جدا من الأرقام .

الفكرة في المقارنة أن أوجد المجموعات الجزئية بثلاث خانات من كل بطاقة من البطاقات ال 84 , يعني 20 توزيعة مختلفة لكل بطاقة .. وأنشأت مصفوفة 84x84 , بحيث كل إحتما من 84 بطاقة أوجد إحتمالات الثلاث كرات فيه وأضع 1 في مكان إحتماله وصفر في الخانة التي ليست فيها الإحتمال المعني "84 هي كل الإحتمالات للثلاث كرات هنا" الآن للبطاقات ال 84 كلها هذه المصفوفة تظهر كهذا الشكل

01000011111111010101011100110

01010000000111000111111111111

00100010000111111111000011110

..... الخ

المصفوفة أعلاه للتوضيح فقط لكنها 84x84 .. المهم كل سطر فيه 20 واحد بالضبط ..

الآن لحل المسألة فأنا أبحث عن عدد بطاقات 4 أو 5 أو 6 أو 7 .. الخ "أقل عدد كما طلبت" بحيث يكون حاصل عملية OR بين هذه الأرقام تعطي 84 واحد , بحيث تغطي كافة الإحتمالات التي نريدها :)

طبعا ستكون هناك طريقة أفضل ,وأريد أن أعرف تفسير رياضي لل 7 لو كانت صحيحة أيضا ..

عينات من مجموعات البطاقات :

987654

987653

987652

987651

984321

965431

965321

و

987654

987653

987652

987651

984321

964321

765431

الكود:

// combs.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;


long long  Fact(int x,int how_many_nums=0)
{
    int W=0;
long long r =1;
if(how_many_nums)W=how_many_nums-1;else W=x-1;
for(int q=x;q>=x-W;q--)
r=r*q;



return r;
}

long long T(int x,int y)
{
//return (Fact(x)/(Fact(x-y)*Fact(y)));
    return (Fact(x,y)/Fact(y,0));
}


int comp2(char *str1,char* str2)
{
    int ok=0;
    int S=3,D=3;
    for(int q=0;q<S;q++)
        for(int w=0;w<D;w++)
    {
        if(str1[q]==str2[w])ok++;
    }
        if(ok==3) return 1;

        return 0;
}

//pos--;
//delete []pos;
    //return (char**)BIG_ARR[84][6];

int _tmain(int argc, _TCHAR* argv[])
{
    const int char_num=9;
const int STR = 6;
char STRING[char_num]={'9','8','7','6','5','4','3','2','1'};

int locations = STR;

int pos[STR+1];

char ARR[84][6];
char ARR2[84][3],sub_arr[84][3];
int sub_arr_filled[84][84]={0};

for(int e=0;e<STR+1;e++)
{
pos[e]=e;
}

cout << T(84,6) << endl ;
cin.get();
for(int q=0;q<T(char_num,STR);q++)
{
for(int w=0;w<STR;w++)
{
    ARR[q][w]=(char)STRING[pos[w]];

    cout<<ARR[q][w];
    if(pos[w]==char_num-STR+w)
    {pos[w-1]++;pos[w]=pos[w-1];}
    if(w==STR-1) pos[w]++;
}
cout<<endl;
}
cin.get();

/////////////////////


locations = 3;

for(int e=0;e<STR+1;e++)
pos[e]=e;

int val=0;
cout << T(char_num,locations) << endl ;
for(int q=0;q<T(char_num,locations);q++)
{
for(int w=0;w<locations;w++)
{

    ARR2[q][w]=(char)STRING[pos[w]];

    cout<<ARR2[q][w];
    if(pos[w]==char_num-locations+w)
    {pos[w-1]++;pos[w]=pos[w-1];}
    if(w==locations-1) pos[w]++;
}
cout<<endl;
}

int chars = 6;
for(int s=0;s<84;s++)
{

    for(int a=0;a<6;a++)
        cout<<ARR[a];
    cout<<endl;

    locations = 3;

for(int e=0;e<locations+1;e++)
pos[e]=e;


cout << T(chars,locations) << endl ;
for(int q=0;q<T(chars,locations);q++)
{
for(int w=0;w<locations;w++)
{
    sub_arr[q][w]=(char)ARR[pos[w]];

    cout<<sub_arr[q][w];
    if(pos[w]==chars-locations+w)
    {pos[w-1]++;pos[w]=pos[w-1];}
    if(w==locations-1) pos[w]++;
}

cout<<endl;
for(int h=0;h<T(9,locations);h++)
{
    if(comp2(sub_arr[q],ARR2[h])){sub_arr_filled[h]=1;break;}

}
}

for(int c=0;c<84;c++)
cout<<sub_arr_filled[c];
cout<<endl;

val++;

}

cout << "full perms is :"<< val <<endl;


//////////////////////


const int location = 7;
int loc[location],nums_of_ones=0,highest=0,max_num_of_solutions=0;
for(int e=0;e<location+1;e++)
loc[e]=e;

int loc_solution[location]={0};
chars = 84;

int summ_array[84]={0};
for (long long r=0;r<T(chars,location);r++)
{

	highest=0;nums_of_ones=0;
    for(int w=0;w<location;w++)
{

    for(int t=0;t<chars;t++)
    {
        if(summ_array[t]==0)
        {
        summ_array[t] = summ_array[t] || sub_arr_filled[loc[w]][t] ;loc_solution[w]=loc[w];
        if(summ_array[t]==1) nums_of_ones++;
        }

    }


    if(loc[w]==chars-location+w)
    {loc[w-1]++;loc[w]=loc[w-1];}
    if(w==location-1) loc[w]++;
}
    if(nums_of_ones>highest)
        highest = nums_of_ones;

    nums_of_ones = 0;
    for(int u=0;u<84;u++)summ_array=0;

        if(highest==84)
        {max_num_of_solutions++;
                for(int b=0;b<location;b++)
                        {
                        for(int v=0;v<6;v++)
                        {cout<<ARR[loc_solution][v];}

                cout<<endl;
                }
				cout<<endl;
                //cin.get();
        }
    if(r%1000000 == 0)
    {cout << highest << " NUM of Matches: "<<r<< endl;}
}

cout<< "The Max different number of solutions is : " << max_num_of_solutions;
cin.get();


return 0;

}

في النهاية سيعرض إقتراحات للبطاقات الفائزة ..

يمكن أن تغير قيمة

const int location = 7;

الأخيرة في نهاية الكود لعدد آخر لتجد إحتمالات أخرى .. والأخ الكمبيوتر جرب 406 مليون إحتمال للستة خانات "25 دقيقة تقريبا" ولم يجد تطابق ..

أخيرا الكود ركيك جدا أعرف ذلك لكن الغرض منه حل المسألة فقط , ولو أن هناك أجزاء كثيرة مكررة يمكن أن توضع في دالة عامة وحلقات تكرار أخرى كثيرة لعرض المحتوى في الشاشة ..

-------

كنت أريد أن أقوم بعملية OR بين الأرقام على أساس أن الرقم رقم عشري وعندما أعمل OR بين الرقمين يفترض أن تتم العملية بشكل أسرع , فكنت أريد أن أستخدم مكتبة خالد الشايع لكن لم تكن تعرض في الشاشة + لم أستطع أن أتعامل مع OR وكان يظهر خطأ ..

المهم مكتبة خالد مهمة لأن الأرقام في 84 بت أكبر من الأنواع الأساسية الموجودة المعرفة , حيث أكثرهم 64 بت كما أعرف ..

تم تعديل هذه المشاركة بواسطة HGB في 15 سبتمبر 2010 في 05:37 — السبب: تم التعديل على الكود

3

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#14

السلام عليكم ورحمة الله

فى الحقيقة انا توصلت للحل بدون استخدام برمجة. فقط بعض العمليات العقليه ، والتى لا اعرف كيف جاءت لعقلى :)

انا حللت اللغز على مرحلتين ، المرحلة الأولى توصلت الى ان عدد البطاقات الكافى هو 9 بطاقات. ولكنى بعد ذلك اكتشفت انه يمكن حل بأقل من هذا العدد.

كنت اتخيل مثل اخونا هيثم ان 6 بطاقات تكفى لحل اللغز ، ولذلك كانت فكرة الحل عندى تكوين ست بطاقات ويتم فيها توزيع الاعداد بانتظام ، بحيث يكون كل الاعداد لها نفس فرص الظهور. ولذلك قمت بتقسيم الاعداد الى ثلاث مجموعات

-المجموعة الاولى هى الاعداد: 1 2 3

-المجموعة الثانية هى الاعداد: 4 5 6

-المجموعة الثالثة هى الاعداد: 7 8 9

وقمت باختيار الست بطاقات بالشكل التالى

-البطاقة ب1: 3 اعداد من المجموعة الأولى ، 2 اعداد من المجموعة الثانية ، 1 اعداد من المجموعة الثالثة

-البطاقة ب2: 3 اعداد من المجموعة الأولى ، 1 اعداد من المجموعة الثانية ، 2 اعداد من المجموعة الثالثة

-البطاقة ب3: 2 اعداد من المجموعة الأولى ، 3 اعداد من المجموعة الثانية ، 1 اعداد من المجموعة الثالثة

-البطاقة ب4: 2 اعداد من المجموعة الأولى ، 1 اعداد من المجموعة الثانية ، 3 اعداد من المجموعة الثالثة

-البطاقة ب5: 1 اعداد من المجموعة الأولى ، 3 اعداد من المجموعة الثانية ، 2 اعداد من المجموعة الثالثة

-البطاقة ب6: 1 اعداد من المجموعة الأولى ، 2 اعداد من المجموعة الثانية ، 3 اعداد من المجموعة الثالثة

وبالتالى كانت البطاقات التى اخترتها هى

ب1: 1 2 3 4 5 7

ب2: 1 2 3 6 8 9

ب3: 1 2 4 5 6 7

ب4: 3 4 5 6 8 9

ب5: 1 2 4 7 8 9

ب6: 3 5 6 7 8 9

ورغم ان الأعداد فعلا موزعه جيدا وبانتظام ، ورغم ان كل الأعداد لها نفس فرص الظهور فى الست بطاقات (كل عدد يظهر 4 مرات) , ولكن بتجربة توليد الإحتمالات الـ 84 ، فإننى وجدت ان مجموعة البطاقات السابقة تعطى 80 احتمالا فقط ولا اعلم سببا لذلك :)

وان الأربع إحتمالات التاليه لا يمكن توليدها من مجموعة البطاقات السابقة

1 5 8

1 5 9

2 5 8

2 5 9

ولذلك قمت بتوليد بطاقة سابعة

ب7: 1 2 5 6 8 9

ومنها يمكن توليد الأربع احتمالات المفقودين. وبالتالى بإضافة هذه البطاقة الى مجموعة البطاقات السابقة ، يمكننا توليد جميع الإحتمالات الممكنه. وبالتالى يمكننا ضمان الفوز بكل تأكيد باستخدام 7 بطاقات.

=============================

اعتقد ان سبب عدم حصولى على جميع الاحتمالات باستخدام الست بطاقات ، هو بسبب انه يوجد 7 حالات لخلط الثلاث مجموعات السابق ذكرها وهى كالتالى

-البطاقة ب1: 3 اعداد من المجموعة الأولى ، 2 اعداد من المجموعة الثانية ، 1 اعداد من المجموعة الثالثة

-البطاقة ب2: 3 اعداد من المجموعة الأولى ، 1 اعداد من المجموعة الثانية ، 2 اعداد من المجموعة الثالثة

-البطاقة ب3: 2 اعداد من المجموعة الأولى ، 3 اعداد من المجموعة الثانية ، 1 اعداد من المجموعة الثالثة

-البطاقة ب4: 2 اعداد من المجموعة الأولى ، 1 اعداد من المجموعة الثانية ، 3 اعداد من المجموعة الثالثة

-البطاقة ب5: 1 اعداد من المجموعة الأولى ، 3 اعداد من المجموعة الثانية ، 2 اعداد من المجموعة الثالثة

-البطاقة ب6: 1 اعداد من المجموعة الأولى ، 2 اعداد من المجموعة الثانية ، 3 اعداد من المجموعة الثالثة

-البطاقة ب7: 2 اعداد من المجموعة الأولى ، 2 اعداد من المجموعة الثانية ، 2 اعداد من المجموعة الثالثة

هذا والله اعلى واعلم ،،،

==========================================

طريقة حلك ياهيثم ممتازة ، وسأحاول برمجتها والتأكد مرة ثانيه بأن 6 بطاقات غير كافيه :)

2

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

#15

blink.gif

إذن كان الجواب الأخير الذي وجدته صحيحاً؟

صدقاً وصلت بنهاية المطاف إلى سبع بطاقات متكاملة ولكن بقيت احاول ايجاد أقل منها خجلاً من أن تكون هذه المحاولة الغير موفقة رقم 1000000 tongue.gif

كثرة رسائلي و محاولاتي و التي كانت كلها غير موفقة جعلتني لا أثق في الجواب الذي احصله وهذا ما منعني من ارسال آخر جواب توصلت له

على كل حال استخدمت التخمين في اختيار ارقام البطاقات بعد أن عرضت جميع احتمالات البطاقات الممكنة (عن طريق الكود)

و بعد اختيار البطاقات اخضعها لكود آخر يعيد لي ما اذا كان هناك حالات سحب للكرات غير مدروسة في هذه البطاقات

حاولت كثيرا أن اجعلها 6 بطاقات ولكن عبثاً

على كل حال هذا أخر جواب توصلت له مع كود الاختبار :

<?php

$arr[1]=array(1,2,3,5,8,9);
$arr[2]=array(1,4,6,7,8,9);
$arr[3]=array(1,2,3,4,5,9);
$arr[4]=array(4,5,6,7,8,9);
$arr[5]=array(2,3,4,6,7,8);
$arr[6]=array(2,3,5,6,7,9);
$arr[7]=array(1,2,3,5,6,7);

$arr1=array();
$arr2=array();
$arr3=array();
$b=0;
for($x=1;$x<=7;$x++) {
    	for($i=1;$i<=9;$i++) {
            	for($j=$i+1;$j<=9;$j++) {
                    	for($d=$j+1;$d<=9;$d++) {
                            	if(in_array($i,$arr[$x]) && in_array($j,$arr[$x]) && in_array($d,$arr[$x])) {
                                    	//echo $i."-".$j."-".$d."--<br>";
                                    	array_push($arr1,$i."-".$j."-".$d);
                            	}
                            	else {
                                    	//echo $i."-".$j."-".$d."---<br>";
                                    	//$b++;
                                    	array_push($arr2,$i."-".$j."-".$d);
                            	}

                    	}
            	}
    	}
    	//echo "-------<br>";
}
//echo $b."<br>";

for($g=0;$g<count($arr2);$g++) {
    	if(in_array($arr2[$g],$arr1)==false) {
            	//echo $arr2[$g]."<br>";
            	array_push($arr3,$arr2[$g]);
    	}
}
echo "------------<br>";
print_r(array_unique($arr3));

?>

في النتيجة إذا طبع مصفوفة فارغة هذا يعني أن البطاقات صحيحة و مربحة

أما دون ذلك فإن محتويات المصفوفة هي حالات سحب الكرات الغير مدروسة في البطاقات

ملاحظة :

استاذي الكريم هيثم هل عينات البطاقات المذكورة :

987654
987653
987652
987651
984321
965431
965321

و

987654
987653
987652
987651
984321
964321
765431

هي عينات لمجموعات بطاقات رابحة؟

لأن فيها حالات سحب غير مدروسة والله أعلم مثل : 1-2-7 و غيرها

بارك الله بكم

تم تعديل هذه المشاركة بواسطة MoHaMMaD Pro في 15 سبتمبر 2010 في 03:19

2

Everything will be fine when we TALK LESS, DO MORE


#16

محمد جزاكم الله خيرا تنبيه جيد .. كان هناك فعلا سطر لتصفير متغير في حلقة التكرار يسبب مشكلة عند إيجاد الحلول المتقدمة , عموما هذا هو السطر :

highest=0;nums_of_ones=0;

عدلت الكود الأصلي في الأعلى وأضفته ..

مع أن أول 40 حل تقريبا صحيحة لكن تظهر المشكلة بعد ذلك , وحاليا هذه مجموعة حلول , هل فيها حلول غير مقبولة ؟ يبدو أنني أصبحت لا لأرى :P

987654
987653
987652
987651
954321
874321
864321

987654
987653
987652
987651
954321
874321
764321

987654
987653
987652
987651
954321
874321
654321

987654
987653
987652
987651
954321
864321
764321

987654
987653
987652
987651
954321
864321
754321

987654
987653
987652
987651
954321
854321
764321

75 NUM
70 NUM
71 NUM
73 NUM
78 NUM
77 NUM
72 NUM
69 NUM
60 NUM
72 NUM
987654
987653
987621
987521
987432
987431
654321

987654
987653
987621
987521
984321
974321
654321

987654
987653
987621
987521
984321
874321
654321

شغل الكود حاليا وسيوجد لك كل أرقام البطاقات الممكنة "إضغط Enter لتحصل على المجموعة التالية" وسيتوقف لفترة بضع مرات بسبب عدم وجود تطابق ثم سيعثر على مجموعات جديدة وهكذا ..

بالمناسبة الكود مرن , يعني حتى لو تم تغيير المسألة كأرقام ستتغير الحلول تباعا , يعني لو قلنا نريد أن نسحب 4 كرات والبطاقات كل بطاقة فيها 5 أرقام , كم بطاقة نحتاج يمكن بتعديل الرقم 3 ليصبح 4 و الرقم 6 ليصبح 5 أن تشغل الكود وترى النتائج الجديدة .. ;)

@ عماد : التخمين جميل جدا :P وفي البداية أيضا حاولت أن أحل المسألة بدون برنامج , لكن عدد البطاقات أرهقني ولم أستطع أن أخمن العدد 7 بشكل رياضي , حاولت أن أصغر المسألة ثم أقوم بتكبيرها بالتدريج لأخرج لصيغة ثابتة , لكن العملية كانت ستطول , فإنتقلت للبرنامج .

1

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#17
HGB كتب:

@ عماد : التخمين جميل جدا :P

الفكرة عندى قائمة على ايجاد عدد من البطاقات تكون جميع الأعداد المتاحه موزعه فيها بانتظام. بحيث يكون لكل الاعداد نفس فرص الظهور (الإختيار)

وبالتالى لو تم ايجاد هذه المجموعة من البطاقات ، وتم توليد اى ثلاثة اعداد مهما كانت ، فإنه يمكننا عندها توليد جميع الاحتمالات لثلاث اعداد ، لأن جميع الاعداد لها نفس فرص الظهور.

وحتى اقوم بتوليد هذه المجموعة الخاصة ، حاولت توزيع الاعداد حسب قانون ما -مذكور بأعلى- وأى 6 بطاقات ستختار بناءا على القانون السابق ، ستحقق نفس النتائج التى حققتها سابقا.

وبالتالى الامر ابعد ما يكون عن التخمين :)

1

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

#18

نعم يا عماد لم أقصد التخمين الإعتباطي وإنما تخمين رياضي "ويفترض أن لايحتسب تخمين أيضا" , عموما :

The Max different number of solutions is : 74340

قبل قليل الكمبيوتر إنتهى وقال أن هنالك أكثر من 74 ألف حل مختلف للمسألة :ohmy:

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#19
HGB كتب:

قبل قليل الكمبيوتر إنتهى وقال أن هنالك أكثر من 74 ألف حل مختلف للمسألة :ohmy:

لا تتعجب اخى هيثم :)

فعدد المجموعات الجزئية التى تتكون من 7 بطاقات مختارة من اصل 84 بطاقه مختلفه ، هو

4,529,365,776

وبالتالى 74,340 ليس بالعدد الكبير نسبة للعدد السابق :)

بالله التوفيق ،،،

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

مواضيع مشابهة