![]() |
|
[PracticalWork_02] خوارزمية التجميعات الممكنة - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : تمارين دلفي وحلول (https://delphi4arab.net/forum/forumdisplay.php?fid=16) +--- الموضوع : [PracticalWork_02] خوارزمية التجميعات الممكنة (/showthread.php?tid=2236) |
[PracticalWork_02] خوارزمية التجميعات الممكنة - kachwahed - 27-07-2010 بسم الله الرحمن الرحيم السلام عليكم ورحمة الله المطلوب في هذا التمرين كتابة خوارزمية تحسب جميع الإمكانيات لأرقام يقوم بإدخالها المستخدم مثال: إذا المستخدم الأرقام: 2، 3، 4، 7 يقوم البرنامج بحساب المجاميع: (2، 2+4، 2+4+3، 2+4+3+7، 2+4+7، 2+3، 2+3+7، 2+7، 4، 4+3، 4+3+7، 4+7، 3، 3+7، 7) المدة: 15 يوم العملية أشبه بـ Brute force لكنها أبسط... كل الحلول مقبولة المثال مرفق، بالتوفيق للجميع
[PracticalWork_02] خوارزمية التجميعات الممكنة - Rover - 27-07-2010 المثال المرفق يحتوي خطأ .. نظراً لعدم صحة تعريف المدخل و مخرج الجمع جرب مايلي : 110, 100, 222222222222222222222222222222222222222 و لكن الفكرة سليمة تماماً .. [PracticalWork_02] خوارزمية التجميعات الممكنة - kachwahed - 27-07-2010 أهلا Rover إقتباس :110, 100, 222222222222222222222222222222222222222طبعا، هذا ليس Integer المستخدم في المثال ![]() لحساب مجموع التركيبات الممكنة: التوافيق هنا دالة التباديل! القليل من الرياضيات
[PracticalWork_02] خوارزمية التجميعات الممكنة - TF6M - 27-07-2010 السلام عليكم و رحمة الله و بركاته - لست جيدا في الرياضيات , لكن لا بأس بالمحاولة :![]() بالتوفيق ,, [PracticalWork_02] خوارزمية التجميعات الممكنة - kachwahed - 27-07-2010 @TF6M وعليكم السلام ورحمة الله وبركاته حل صحيح مبدئيا، لكنه يقتصر على الأرقام. للتذكير: مجموع الاحتمالات يمثل مجموع nCr حيث r عدد الإدخالات وn حجم كل مجموعة إذ لا وجود للتكرارات، لأن: 1+2=2+1 ! مثال: كم مجموعة متكونة من 3 أرقام يمكن تكوينها من أصل 10 أرقام. الجواب 3nCr10 [PracticalWork_02] خوارزمية التجميعات الممكنة - kachwahed - 13-08-2010 السلام عليكم أولا أعتذر عن التأخير ... الحل بسيط جدا ويعتمد على فهم جيد لمبدأ عمل الخوارزمية سأقوم بالشرح باستخدام جدول من الأحرف (Array of Chars) والمبدأ واحد (Integers/Strings...) حسنا... منهجية تفكير:
من الصعب جدا إيجاد الحل مباشرة دون تحليل النتائج بعبارة أخرى دعونا نعيد ترتيب نتائج بشكل يسهل تفسيرها بعد بضعة محاولات نحصل على عرض منطقي جدا: كود : A
A+B
A+B+C
[color=Red] A+B+C+D [/color]
A+B+[color=Blue]D[/color]
A+C
A+C+D
A+D
B
B+C
B+C+D
B+D
C
C+D
D![]()
- البداية بإضافة أول عنصر (A) -> إذا وجد عنصر بعده (B) نضيه إليه (لاحظ ترتيب التجميعات فوق!) -> إذا لم يوجد شيء بعده (يعني وصلنا إلى آخر عنصر من الجدول هنا A+B+C+D حيث لا شيء بعد D) -> -> نقوم بحذف العنصر الأخير (D) وتغيير الذي قبله بالعنصر الموالي (أنظر السطر الأحمر: حذفنا D وعوضنا الذي قبله (C) بالعنصر الموالي: D) وهكذا انتهينا ![]()
- لدينا الجدول: PHP كود : varPHP كود : function GetLastCharIndex(var Item: string; arChar: array of Char): Integer;PHP كود : function GetPossibilies(arChar: array of Char): Integer;نبدأ بإضافة الأحرف إلى السطر في متغير نصي Item ثم إضافته إلى TListBox نسميها lbResults كل ذلك يجري في إجرائية مستقلة تأخذ جدول من الأحرف كمعلمة (Parameter) ولتكن ParseNum PHP كود : procedure TfMain.ParseNum(var arChar: array of Char);
الهدف من التمرين ليس الخورازمية بذاتها وإنما طريقة فهم وتحليل المشكلات الحسابية لإيجاد الحلول البرمجية... ملاحظة: يمكن طرح أمثلة أخرى لمن يريد. وحان الآن وقت طرح الملفات المصدرية. [PracticalWork_02] خوارزمية التجميعات الممكنة - خالد على22 - 24-12-2013 إقتباس : البداية بإضافة أول عنصر (A) أخى kachwahed أتعرف أمور كثيرة لا يحلها الكود بقدر ما يحلها المنطق مثال أقل ما يقال عنه أنه رائع منطق رائع و كود جميل شكرا لك |