المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : كود ايجاد احتمالات


عبد الهادي بهاب
04-04-2016, 11:31 PM
السلام عليكم ورحمة الله وبركاته

عندنا مصفوفة ارقام من 1 الى 5
{1;2;3;4;5}

ماهو الكود الذي يعطينا احتمالات ترتيب الاعداد بحيث لا يكون الرقم في مرتبته
اقصد مثلا هذا الحل
{ 2;5;4;1;3}


------------ قد ننقل الطلب الى موضوع استراحة اوتوبلاي ------
بالتوفيق

ثامر أبو بلقيس
04-04-2016, 11:55 PM
أقل ما يقال أنه :
ســــــــؤال جميل جدا ورائع :abc_149:

بمجرد ايجاد فرصة سأحاول بناء خربشة
خلي السؤال مفتوح لأيام إن أمكن ففي تنوع الحلول افادة :abc_138:

ثامر أبو بلقيس
05-04-2016, 12:21 AM
عدد الاحتمالاات = 120

عدد الاحتمالات المربوطة بالشرط = 44

ملاحظة : اذ أردت قراءة الحل بعد كتابته بثواني انقله للاستراحة :abc_138:

عبد الهادي بهاب
05-04-2016, 12:47 AM
عدد الاحتمالاات = 120

عدد الاحتمالات المربوطة بالشرط = 44

ملاحظة : اذ أردت قراءة الحل بعد كتابته بثواني انقله للاستراحة :abc_138:

حاضر استاذ .......سانتقل مباشرة

عبد الهادي بهاب
05-04-2016, 12:52 AM
هذه خربشة قبل الاطلاع على الحل .......عدد الاحتمالات لا تتجاوز 21 !!!!!!!!!!!!!!!


abc4web = "" ; es= 1;
repeat
----------
abc ="";
num = {1,2,3,4,5};
for i=1,5 do
p=Math.Random(1,#num);
if num[p] ~= i then
abc = abc..","..num[p];
Table.Remove(num,p);
end
end

if String.Length(abc) >= 10 then
abc4web = abc4web.."\r\n"..abc;
end
es = es + 1;
until es == 50

Dialog.Message("", abc4web);

ثامر أبو بلقيس
05-04-2016, 01:02 AM
أخي لقد وضعت أنت هذا المثال :
{ 2;5;4;1;3} هل بوجد ضمن الكود المكتوب أعلاه ؟؟ لا
قم يزيارة الاستراحة لتجده قابعا في الرتبة 18 من الاحتمالات موفق :abc_086:

عبد الهادي بهاب
05-04-2016, 01:21 AM
أخي لقد وضعت أنت هذا المثال :
{ 2;5;4;1;3} هل بوجد ضمن الكود المكتوب أعلاه ؟؟ لا
قم يزيارة الاستراحة لتجده قابعا في الرتبة 18 من الاحتمالات موفق :abc_086:

اعتمدت الدالة العشوائية ثم اشترطت فيما ينتج عنها ....و منت اعتقد انها ستسستمر لكنها توقفت لسب برمجي معين

ثامر أبو بلقيس
05-04-2016, 02:01 AM
لاتبنى الحلول الرياضية على العشوائية :abc_139:
و الا لن تمثل حلول بل جزء من الحلول و الحلول المكررة :abc_139: الدالة العشوائية وسيلة لاستغلال النتائج و ليس لفرض أو ضبط
نتائج رياضية لم أصادف حلا رياضيا بحتا يعتمد على العشوائية :abc_152:
المنطق يرفضها لبناء خوارزمية عمل ذات نتائج محددة

ثامر أبو بلقيس
05-04-2016, 02:50 PM
جيد حتى ننوع في الحلول سأكتب كما قلت خربشة
في انتظار تعديل و تهذيب لها :abc_088:

ثامر أبو بلقيس
05-04-2016, 03:02 PM
السلام عليكم ورحمة الله وبركاته
لنفكـــر بطريقة مختلفـــة .. ونتخيل المصفوفة المطروحة {1,2,3,4,5}
عددا وواضح أنه سيكون 12345 اذن هذا هو البداية النهاية أو أكبر عدد مكون
من نفس الارقام هو 54321 بمعنى أن المجموعات تكون محصورة أو موجودة ضمن
هذا النطاق العددي من 12345 إلى 54321
وعند بناء دالة تكرارية سيكون هناك تزايد يفرض تواجد أعداد ضمن هذا النطاق العددي أرقامها
غير مقصودة مثلا عندما نبدأ من 12345 سيكون بعدها 12346 ثم 12347 هاهو رقم 6 ظهر
ناهيك عن تكرار لنفس الأرقام
---------------------
اذن هناك الكثير من الاستثناءات التي ستطرح على الاعداد من 12345 إلى 54321
وهي :
01 - منع تكرار رقم معين في عدد ما
02 - استبعاد الاعداد التي تشمل 0 أو 6 أو 7 أو 8 أو 9
03 - تخفيف مجال الحصر و خصوصا أن الاقام المكونة من الارقام 1 - 2 - 3 - 4 - 5 ستشكل في كل
الحالات عددا له قابلية القسمة على 3
------------------------------------------------------------------------------------------------------
اذ استطعنا تحقيق هذه المراحل سنتحصل على المصفوفات على شكل أعداد
نقوم بتحويله على شكل مصفوفات و بالتالي قد نحقق الطلب

لنحاول :abc_138:

ثامر أبو بلقيس
05-04-2016, 03:19 PM
سنعلن عن حاوية سيتجمع فيها الحل النهائي ويعلن عنها عادة قبل
أي كود و لتكن :
01 -
g=""

نعم في المكان المعلن عنه ستتجمع الحلول

02 - الدالة التكرارية التي اتفقنا عنها بأن تكون منطلق فكرة التطبيق
من السهل الاعلان عنها كالتالي :
for j = 12345,54321 do


خلاص الان بدأ الحساب من .. إلى و ما أكثر الاستثناءات
---------------------------------------------------------------------
ما هي الاعداد التي نريد التقاطها عند بدء العد ؟؟
- الاعداد التي أرقام مراتبها الخمسة يجب أن تكون ياإما 1 أو 2 أو 3 أو 4 أو 5
غير ذلك مرفوض
اذن التعبير j هو عدد مكون من 5 مراتب هذه المراتب أعدادها لن يقبل منها الا ما ينتمي الى السلسلة من 1 الى 5
اذن دعنا نعلن عن هذه الجزئية
سنكتب 5 اعلانات لأن المراتب 5 لكل عدد كل اعلان يعنى بمرتبة معينة يفترض
الرقم 1 تعبير صحيحا اذ كان الرقم مقبول لاحظ :
c1= string.find(""..String.Mid(j,1, 1), "[1-5]", 1);
c2= string.find(""..String.Mid(j,2, 1), "[1-5]", 1);
c3= string.find(""..String.Mid(j,3, 1), "[1-5]", 1);
c4= string.find(""..String.Mid(j,4, 1), "[1-5]", 1);
c5= string.find(""..String.Mid(j,5, 1), "[1-5]", 1);


أضن عند تأمل الأسطر الصورة ستكون واضحة
كل سطر يخص مرتبة معينة و كأننا مثلا في السطر الاول نقول
اذا كانت الرتبة الاولى للعدد j محصورة من 1 الى 5 فإن رقم 1 معبر عن صحة ذلك

نواصل :abc_138:

ثامر أبو بلقيس
05-04-2016, 03:26 PM
اذن نبدأ في بناء شرط الذي على ضوئه
يتم الموافقة على العدد j حتى يكون مقبولا
ستكون بداية الشرط هكذا :
if c1 == 1 and c2 == 1 and c3 == 1 and c4 == 1 and c5 == 1

لكن هذا لا يكفي لانه سيكون هناك أعداد أخرى غير مقبولة نخفف منها
ونضيف شرط قابلية القسمة على 3

نضيف :
and Math.Mod(j, 3)==0

بدأ الان تناقص نوعا ما للعناصر الدخيلة و بدأت الصورة تتضح قليلا

نواصل :abc_138:

ثامر أبو بلقيس
05-04-2016, 03:37 PM
لكن لو أعلنا على العدد j الناتج
سيكون هناك أرقاما مكررة و تحقق ماسيق من شروط
اذن علينا أن نمنع ذلك و نخير البرنامج
أن المرتية الاولى لن تساوي الثانية و لا الثالثة و لا الرابعة و لا الخامسة أليس كذلك
اذن نضيف :
and String.Mid(j,1,1)~=String.Mid(j,2, 1)and String.Mid(j,1, 1)~=String.Mid(j,3, 1) and String.Mid(j,1, 1)~=String.Mid(j,4, 1)
and String.Mid(j,1, 1)~=String.Mid(j,5, 1)

و نخبره كذلك بأننا نشترط كذلك المرتبة الثانية لن تساوي لا الثالثة و لا الرابعة و لا الخامسة

لنخبره :
and String.Mid(j,2,1)~=String.Mid(j,3, 1)and String.Mid(j,2, 1)~=String.Mid(j,4, 1) and String.Mid(j,2, 1)~=String.Mid(j,5, 1)


و حتى لا تغضب المرتبة الثالثة فهي بدورها لن تساوي لا الرابعة و لا الخامسة
جيد نضيف :
and String.Mid(j,3,1)~=String.Mid(j,4, 1)and String.Mid(j,3, 1)~=String.Mid(j,5, 1)


و المرتبة الرابعة لن تساوي الخامسة
and String.Mid(j,4,1)~=String.Mid(j,5, 1)


هل هذه الشروط كافية لحصر الاحتمالات ؟؟
نواصل :abc_138:

ثامر أبو بلقيس
05-04-2016, 03:44 PM
طبعا غير كافية لأن التمرين
يشترط بأن لا تقبل أي عدد حافظ أحد أرقامه على رتبته الاصلية
فلا الواحد مقبول في الرتية الاولى و لا الاثنين مقبولة في الرتبة الثانية و لا الثلاثة في الرتبة الثالثة
و لا الأربعة في الرتبة الرابعة و لا الخمسة في الرتبة الخامسة
إليك بشرط يعبر عن ذلك
and String.Mid(j,1, 1)~=""..1
and String.Mid(j,2, 1)~=""..2
and String.Mid(j,3, 1)~=""..3
and String.Mid(j,4, 1)~=""..4
and String.Mid(j,5, 1)~=""..5

هنا الشروط انتهت و لم يبق لنا شرطا لذلك وجب تحديد ماذا يحدث بعد تحقق دالة الشرط التي تعمل
ضمن دالة الــ for
ونكتب :
then

ماذا يحدث ؟؟؟؟ :abc_139:

ثامر أبو بلقيس
05-04-2016, 03:55 PM
تقول لي عند تحقق كل ذلك
سيقبل العدد j الذي مر من خلال الدالة التكرارية for و الموجود من 12345 إلى غاية 54321
أقول لك نعم لكن سنحصل علية عددا و نحن نريده على شكل مصفوفـــــــة
مثلا العدد الاول سيكون
21453
كيف تحوله على شكل مجموعة
نستعمل String.Mid متفقين
اذن التعبير :
tamer = "{"..String.Mid(j,1, 1)..","..String.Mid(j,2, 1)..","..String.Mid(j,3, 1)..","..String.Mid(j,4, 1)..","..String.Mid(j,5, 1).."}"


هو العدد j المقبول وفق الشروط و مجزأ على شكل مجموعة
ولاحظ أن هذا التعبير سيعبر عن عدد واحد في دورة الدالة for نريد الاحتفاظ به
ماذا نعمل نرميه في الحاوية المعلن عليها في البداية
أي
g=g..tamer.. " "


بمعنى أنه سيتم الاحتفاظ بكل عدد مقبول بعد تحويله على شكل مجموعة في الحاوية g
ووضعنا فراغا حتى لا تتداخل الأعداد و يصبح كرنفال أرقام
----------------------------------------------------------------------------
نغلق الكود نحسب لدينا if وحدة و for وحدة اذن نحتاج
لاثنين end وحدة لهذه و وحدة لهذه
end
end
------------------
انتهى بعد ما تجمع كل هذه الأكواد
في زر و تضغط لن يظهر شيء :abc_152:

ثامر أبو بلقيس
05-04-2016, 04:06 PM
و حتى تعاين النتائج
أظهر ما جمع في الحاوية g
بهذا :
Dialog.Message("Notice", g);


انتهى ... عدل ... هذب الأكواد ... الغاية هي أن تحول فكرتك
لبرمجة .. و ليست الاكواد هي من تأسرني و تفرض عني بناء مشروع
منبهرا بها
تقديري و موفق :abc_138:
نلتقي بود :abc_138:

عبد الهادي بهاب
05-04-2016, 06:49 PM
و حتى تعاين النتائج
أظهر ما جمع في الحاوية g
بهذا :
dialog.message("notice", g);


انتهى ... عدل ... هذب الأكواد ... الغاية هي أن تحول فكرتك
لبرمجة .. و ليست الاكواد هي من تأسرني و تفرض عني بناء مشروع
منبهرا بها
تقديري و موفق :abc_138:
نلتقي بود :abc_138:


لكل ما سبق .........اقل ما اقول .....شرح جميل دقيق وواضح ............و اكواده بسيطة ........سنطبق مباشرة
شكرا جزيلا على سعة الصدر و تخصيص وقت كبير للكتابة و الشرح و الحل
نلتقي بود

عبد الهادي بهاب
05-04-2016, 06:57 PM
النتيجة

http://up.harajgulf.com/do.php?img=669193

عبد الهادي بهاب
05-04-2016, 06:59 PM
شرط القسمة على 3 لم افهمه استاذنا الكريم ؟؟؟؟؟؟؟

ثامر أبو بلقيس
05-04-2016, 07:42 PM
قابلية قسمة الأعداد على ( 3 )
كل عدد يكون مجموع أرقامه (منازله) من مضاعفات العدد (3) فهو يقبل القسمة على (3)
أو
يقبل العدد القسمة على (3) إذا كان مجموع أرقامه يقبل القسمة على (3)

ولاحظ مجموع الأرقام 12345 بأي تشكيل سيكون 5+4+3+2+1 = 15 ثم 5+1 = 6 وهو من مضاعفات 3 وقابل للقسمة عليها

لذلك فهذا الشرط سيستبعد لنا الكثير من الاعداد و هو ماحدث في الكود :abc_138:
طبعا كتبته أو أضفته نظريا ربما عمليا ماجاء بعده من شروط غطى عليه

عبد الهادي بهاب
05-04-2016, 09:18 PM
قابلية قسمة الأعداد على ( 3 )
كل عدد يكون مجموع أرقامه (منازله) من مضاعفات العدد (3) فهو يقبل القسمة على (3)
أو
يقبل العدد القسمة على (3) إذا كان مجموع أرقامه يقبل القسمة على (3)

ولاحظ مجموع الأرقام 12345 بأي تشكيل سيكون 5+4+3+2+1 = 15 ثم 5+1 = 6 وهو من مضاعفات 3 وقابل للقسمة عليها

لذلك فهذا الشرط سيستبعد لنا الكثير من الاعداد و هو ماحدث في الكود :abc_138:
طبعا كتبته أو أضفته نظريا ربما عمليا ماجاء بعده من شروط غطى عليه

لقطة روووووعة .......يعني اذا كان فيه ستة اعداد من 1 الى 6 نستطيع حصر الاحتمالات اكثر بوضع شرط القابلية لرقم 3 و سبعة و 21 .......جميل والله جميل :abc_023::abc_023:

ياسرهتهت
06-04-2016, 12:33 AM
بسم الله الرحمن الرحيم
بارك الله فيكم اخواني واساتذتي الكرام
على هذا الموضوع والافكار الرائعة
موضوع ضخم - حاولت الفهم ولكن -- ؟
:abc_102:الموضوع اكبر من معلوماتي :abc_102:
تحياتي لكم موفقين اجمعين
:abc_152::abc_152: