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

لغز برمجي, التحدي مفتوح بأي لغة برمجة

بدأه khatibe_30 في 6 سبتمبر 2012 · 41 رد · 3,713 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم أعزائي, مرحبا بكم

أقدم لكم مسألة حسابية (مشكلة) و المطلوب إيجاد الحل البرمجي لها.

المعطيات:

نفترض أنه لدينا 3 أنابيب بسعة متساوية, سعة كل أنبوب 6 لتر, و وعاءين (2 وعاء) نستخدمهما لنملأ الأنابيب بالماء, في كل مرة نسكب الماء في أنبوب ما من الأنابيب (الترتيب غير مهم) باستخدام أحد الأوعية إلى أن نملأ كل الأنابيب.

الوعاء الأول سعته 3 لترات, و الوعاء الثاني سعته 2 لترات.

الشرط الوحيد الذي يجب أن نتقيد به هو أن لا نجد مستوى الماء متساوي في أنبوبين متجاورين أثناء أي مرحلة من العملية, مثلا أنظر إلى الصورة:

719119421.png

العملية على اليسار صحيحة, لأنه لا يوجد أنبوبين متجاورين لهما نفس المستوى من الماء

العملية على اليمين, غير مسموح القيام بها, الأنبوب الثاني و الثالث لهما نفس المستوى, لذلك يجب أن نتوقف.

إذن, يجب أن نملأ الأنابيب, نسكب كمية من الماء باستعمال أحد الأوعية في كل أنبوب إلى أن نملأه باستخدام مجموعة من الأوعية, على شرط عدم وصول الماء لنفس المستوى في أنبوبين متجاورين, في المثال السابق, من أجل 3 أنابيب, سعة كل أنبوب 6 لترات, يوجد طريقتين لملأ الأنابيب كما في الصورة:

683632173.png

الطريقة الأولى, على اليسار: الأنبوب الأول 3-3, الأنبوب الثاني 2-2-2, الأنبوب الثالث 3-3

الطريقة الثانية, على اليمين: الأنبوب الأول 2-2-2, الأنبوب الثاني 3-3, الأنبوب الثالث 2-2-2

و من أجل 3 أنابيب, سعة كل أنبوب 8 لترات, يوجد 4 طرق, و هذه إحدى الطرق في الصورة:

2-3-3, 3-3-2, 2-3-3

473251544.png

في حين أن العملية التالية خاطئة:

3-3-2, 2-2-2-2, 3-2-3

776692695.png

خلال العملية, نلاحظ أن الأنبوب الثاني و الثالث يمكن أن يكون الماء فيهما في نفس المستوى باستعمال سلسلة الأوعية المعطاة لكل أنبوب.

المطلوب:

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

أي, من أجل N = 10 و L = 32 كم يوجد من عدد الطرق ملأ الأنابيب؟

الأفضل أن تكتب الكود الذي سيعمل في الحالة العامة, من أجل عدد أنابيب N, كل أنبوب بسعة L لترات, أوجد عدد الطرق التي يمكن أن نملأ بها الأنابيب.

معطيات مساعدة:

إليك هذه النتائج المحسوبة مسبقا:

من أجل N = 3 و L = 8 هناك 4 طرق

من أجل N = 3 و L = 9 هناك 8 طرق

من أجل N = 5 و L = 10 هناك 28 طريقة

من أجل N = 6 و L = 13 هناك 452 طريقة

من أجل N = 5 و L = 16 هناك 1796 طريقة

ملاحظة: قبل أن أكتب الموضوع أجريت بحثا في المنتدى حتى أتجنب التكرارا و لم أجد موضوعا مشابه, لذلك, إذا كان الموضوع مكررا فأرجو حذفه و إبلاغي.

1

[سبحان الله و بحمده, سبحان الله العظيم]

#2

لغز جميل رائع سأحاول حله إن شاء الله بلغة الأوبجكت باسكال

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#3

سؤال:

بآخر مثال ذكرت :

اقتباس
في حين أن العملية التالية خاطئة:

3-3-2, 2-2-2-2, 3-2-3

طيب ألا يمكن أن نقوم بعملية ملء كل أنبوب لوحده .... وبذلك لن تكون الأنابيب بنفس المستوى أبداً ....ولكن بنفس الترتيب ... الذي ذكرته ..

أعني أنه لا يكفي أن نكتب ترتيب ملء كل أنبوب .. بل يجب أن نذكر متى قمنا بكل عملية ملء ...

________________________________________

وسؤال تاني : كم تدفع لمن يحله laugh.giflaugh.giflaugh.giflaugh.gif

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 8 سبتمبر 2012 في 15:01

#4
مصطفى 36a2 كتب:

سؤال:

بآخر مثال ذكرت :

3-3-2, 2-2-2-2, 3-2-3

طيب ألا يمكن أن نقوم بعملية ملء كل أنبوب لوحده .... وبذلك لن تكون الأنابيب بنفس المستوى أبداً ....ولكن بنفس الترتيب ... الذي ذكرته ..

أعني أنه لا يكفي أن نكتب ترتيب ملء كل أنبوب .. بل يجب أن نذكر متى قمنا بكل عملية ملء ...

________________________________________

وسؤال تاني : كم تدفع لمن يحله laugh.giflaugh.giflaugh.giflaugh.gif

لا طبعا, إذا كنت ستملأ كل أنبوب لوحده, فالانابيب لن تكون في مستوى متساوي ابدا حتى لو استخدمت 2-2-2-2, 2-2-2-2, 2-2-2-2 و لا فائدة من المسألة كلها

يعني انت لما تعطيني هالسلسلة لملأ 3 أنابيب:

3-3-2, 2-2-2-2, 3-2-3

فالمطلوب انه مهما كان الترتيب الذي أنفذ به السلسلة فلا يجب أن أصل لمستوى متساوي من الماء في الانابيب

و أنا لما أسكب في الأنبوب الأول 3-3, و في الأنبوب الثاني 2-2-2 (البداية من اليسار إلى اليمين) فراح أوصل لمستوى 6 في الأنبوبيبن 1 و 2 و هذا ممنوع

+

سأدفع للفائز 20 نقطة من رصيدي يحولها له المشرف :happy:

تم تعديل هذه المشاركة بواسطة khatibe_30 في 8 سبتمبر 2012 في 15:41

[سبحان الله و بحمده, سبحان الله العظيم]

#5
اقتباس

سأدفع للفائز

لا أمزح معك بجد ... لا يوجد تحويل رصيد laugh.giflaugh.gif

بالنسبة للمسألة إذا يمكن ان يكون الشرح :

كلما نسكب الماء نضع خط على الأنبوب حيث وصل الماء ..

والمطلوب ألا يكون أي خطين على استقامة واحدة ... ما رأيك wink.gif

#6
مصطفى 36a2 كتب:

لا أمزح معك بجد ... لا يوجد تحويل رصيد laugh.giflaugh.gif

بالنسبة للمسألة إذا يمكن ان يكون الشرح :

كلما نسكب الماء نضع خط على الأنبوب حيث وصل الماء ..

والمطلوب ألا يكون أي خطين على استقامة واحدة ... ما رأيك wink.gif

أجل

كل ما نسكب الماء نضع خط على الأنبوب و يجب أن لا نجد أن هناك خطين متجاورين على نفس المستوى

هذه طريقة أسهل للفهم :wink:

[سبحان الله و بحمده, سبحان الله العظيم]

#7
khatibe_30 كتب:

و من أجل 3 أنابيب, سعة كل أنبوب 8 لترات, يوجد 4 طرق, و هذه إحدى الطرق في الصورة:

2-3-3, 3-3-2, 2-3-3

473251544.png

في حين أن العملية التالية خاطئة:

3-3-2, 2-2-2-2, 3-2-3

776692695.png

خلال العملية, نلاحظ أن الأنبوب الثاني و الثالث يمكن أن يكون الماء فيهما في نفس المستوى باستعمال سلسلة الأوعية المعطاة لكل أنبوب.

المطلوب:

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

أي, من أجل N = 10 و L = 32 كم يوجد من عدد الطرق ملأ الأنابيب؟

الأفضل أن تكتب الكود الذي سيعمل في الحالة العامة, من أجل عدد أنابيب N, كل أنبوب بسعة L لترات, أوجد عدد الطرق التي يمكن أن نملأ بها الأنابيب.

معطيات مساعدة:

إليك هذه النتائج المحسوبة مسبقا:

من أجل N = 3 و L = 8 هناك 4 طرق

من أجل N = 3 و L = 9 هناك 8 طرق

من أجل N = 5 و L = 10 هناك 28 طريقة

من أجل N = 6 و L = 13 هناك 452 طريقة

من أجل N = 5 و L = 16 هناك 1796 طريقة

ملاحظة: قبل أن أكتب الموضوع أجريت بحثا في المنتدى حتى أتجنب التكرارا و لم أجد موضوعا مشابه, لذلك, إذا كان الموضوع مكررا فأرجو حذفه و إبلاغي.

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

هل يمكنك سرد الاربع حلول التى تم ذكرها حيث اننى لم اتمكن من الحصول إلا على اثنين فقط ؟؟؟؟؟؟؟؟؟؟

#8
fmgret12 كتب:

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

هل يمكنك سرد الاربع حلول التى تم ذكرها حيث اننى لم اتمكن من الحصول إلا على اثنين فقط ؟؟؟؟؟؟؟؟؟؟

هكذا, :

2-3-3, 3-3-2, 2-3-3

أو

3-3-2, 2-3-3, 3-3-2

أو

3-2-3,2-2-2-2,3-2-3

أو

2-2-2-2, 3-2-3, 2-2-2-2

[سبحان الله و بحمده, سبحان الله العظيم]

#9
khatibe_30 كتب:

هكذا, :

2-3-3, 3-3-2, 2-3-3

أو

3-3-2, 2-3-3, 3-3-2

أو

3-2-3,2-2-2-2,3-2-3

أو

2-2-2-2, 3-2-3, 2-2-2-2

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

اعتقدت ان عدد مرات سكب الماء فى كل الانابيب واحد ولذلك اعتقدت ان الحلين الاخيرين لا يحققان الشروط

اما اذا كانت الشروط كذلك اعتقد من الممكن حلها باسلوب بسيط وساحاول حلها ان شاء الله بمجرد عدم انشغالى

#10
fmgret12 كتب:

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

اعتقدت ان عدد مرات سكب الماء فى كل الانابيب واحد ولذلك اعتقدت ان الحلين الاخيرين لا يحققان الشروط

اما اذا كانت الشروط كذلك اعتقد من الممكن حلها باسلوب بسيط وساحاول حلها ان شاء الله بمجرد عدم انشغالى

عدد مرات سكب الماء لا يهم, المهم ان تتوقف عند امتلاء الاناء, بعبارة اخرى ان يكون مجموع سعة الاواني المستعملة لسكب الاناء مساوي لسعة الاناء

بالتوفيق,,في انتظار الحل

[سبحان الله و بحمده, سبحان الله العظيم]

#11

السلام عليكم

لغز برمجى رائع

حاولت وضع قانون رياضى لتسهيل حل هذا برمجياً ولكن لم أتحصل عليه , وأيضاً حاولت وضع كود برمجى يتبع إسلوب الإنسان فى عملية وضع جميع الحلول لملئ الأنابيب ثم إختيار الأنسب وفق الشروط ولكن لم أوفق فى هذا أيضاً smile.gif , فى إنتظار الحل ...

دمت بخير

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#12

السلام عليك

بعد غياب بسبب مشاغلي أظن أني قد حللت اللغز فهذا هو وسأطرح الشرح فيما بعد إن شاء الله لأني مستعجل

procedure TForm1.Button1Click(Sender: TObject);
var i,j,h,f,x:integer;
  a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16:byte;
  table,addTable:array[1 .. 26215,1 .. 16] of byte;
  test:Boolean=false;
  count:real=0;
  begin
  i:=1; x:=0;
  for a1:=2 to 3 do
   for a2:=2 to 3 do
    for a3:=2 to 3 do
     for a4:=2 to 3 do
      for a5:=2 to 3 do
       for a6:=2 to 3 do
        for a7:=2 to 3 do
         for a8:=2 to 3 do
          for a9:=2 to 3 do
           for a10:=2 to 3 do
            for a11:=2 to 3 do
             for a12:=2 to 3 do
              for a13:=2 to 3 do
               for a14:=2 to 3 do
                for a15:=2 to 3 do
                 for a16:=2 to 3 do
 begin
  if a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a13+a14+a15+a16=32 then
  begin
   table[i,1]:=a1;table[i,2]:=a2;table[i,3]:=a3;
   table[i,4]:=a4;table[i,5]:=a5;table[i,6]:=a6;table[i,7]:=a7;
   table[i,8]:=a8;table[i,9]:=a9;table[i,10]:=a10;table[i,11]:=a11;
   table[i,12]:=a12;table[i,13]:=a13;table[i,14]:=a14;table[i,15]:=a15;table[i,16]:=a16;
   i:=i+1; h:=16;    test:=true;
  end
  else
  if a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a13+a14+a15=32 then
  begin
  table[i,1]:=a1;table[i,2]:=a2;table[i,3]:=a3;
   table[i,4]:=a4;table[i,5]:=a5;table[i,6]:=a6;table[i,7]:=a7;
   table[i,8]:=a8;table[i,9]:=a9;table[i,10]:=a10;table[i,11]:=a11;
   table[i,12]:=a12;table[i,13]:=a13;table[i,14]:=a14;table[i,15]:=a15;
   i:=i+1;   h:=15;  test:=true;
  end
  else
  if a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a13+a14=32 then
  begin
   table[i,1]:=a1;table[i,2]:=a2;table[i,3]:=a3;
   table[i,4]:=a4;table[i,5]:=a5;table[i,6]:=a6;table[i,7]:=a7;
   table[i,8]:=a8;table[i,9]:=a9;table[i,10]:=a10;table[i,11]:=a11;
   table[i,12]:=a12;table[i,13]:=a13;table[i,14]:=a14;
   i:=i+1; h:=14;   test:=true;
  end
  else
  if a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a13=32 then
  begin
   table[i,1]:=a1;table[i,2]:=a2;table[i,3]:=a3;
   table[i,4]:=a4;table[i,5]:=a5;table[i,6]:=a6;table[i,7]:=a7;
   table[i,8]:=a8;table[i,9]:=a9;table[i,10]:=a10;table[i,11]:=a11;
   table[i,12]:=a12;table[i,13]:=a13;
   i:=i+1; h:=13;   test:=true;
  end
  else
  if a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12=32 then
  begin
   table[i,1]:=a1;table[i,2]:=a2;table[i,3]:=a3;
   table[i,4]:=a4;table[i,5]:=a5;table[i,6]:=a6;table[i,7]:=a7;
   table[i,8]:=a8;table[i,9]:=a9;table[i,10]:=a10;table[i,11]:=a11;
   table[i,12]:=a12;
   i:=i+1;  h:=12;   test:=true;
  end
  else
  if a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11=32 then
  begin
  table[i,1]:=a1;table[i,2]:=a2;table[i,3]:=a3;
   table[i,4]:=a4;table[i,5]:=a5;table[i,6]:=a6;table[i,7]:=a7;
   table[i,8]:=a8;table[i,9]:=a9;table[i,10]:=a10;table[i,11]:=a11;
   i:=i+1; h:=11;  test:=true;
  end ;
  if test  then
   for j:=1 to h do
    begin
    x:=x+table[i-1,j];
     addTable[i-1,j]:=x;
    end;
  x:=0;
  test:=false;

 end;
for i:=1 to 26215 do
 for f:=i+1 to 26215 do
    begin
     test:=false;
      for j:=1 to 15 do
       for h:=1 to 15 do
         if (addtable[f,h] <> 0) and (addtable[f,h] <> 32) then
           if addtable[f,h]= addtable[i,j] then test:=true;
      if test=false then begin count:=count+1 ; end;
     end;
  //count := 1708910
  count:=power(count,5);
 Label1.Caption:=floattostr(count);

  end;

الناتج هو

1,45745768883e+31

تم تعديل هذه المشاركة بواسطة linuxman في 23 سبتمبر 2012 في 19:25

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#13
linuxman كتب:

الناتج هو

2.9149153776673 E31

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

لا, النتيجة فيها 15 رقم فقط

هل جربت الكود على القيم المعطاة؟:

من أجل N = 3 و L = 8 هناك 4 طرق

من أجل N = 3 و L = 9 هناك 8 طرق

من أجل N = 5 و L = 10 هناك 28 طريقة

من أجل N = 6 و L = 13 هناك 452 طريقة

من أجل N = 5 و L = 16 هناك 1796 طريقة

+

جديد:

تم اضافة صفحة للتحقق من نتائجكم فورا

http://ikamira.99k.org/at_puzzel.php

تم تعديل هذه المشاركة بواسطة khatibe_30 في 23 سبتمبر 2012 في 12:59

[سبحان الله و بحمده, سبحان الله العظيم]

#14

أظن أني اخطات في الكود ولكن مع ذلك لست مقتنعا بأن عدد الاحتمالات هو 15 وسأعود إن شاء الله

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#15
اقتباس
لست مقتنعا بأن عدد الاحتمالات هو 15

قال ياسين أن عدد الحتمالات هو 15 رقم .. يعني 15digits ... من 15 منزلة ...

بالتوفيق أخي linuxman .. أنت الوحيد المتحمس لحل المسألة ..

#16
مصطفى 36a2 كتب:

قال ياسين أن عدد الحتمالات هو 15 رقم .. يعني 15digits ... من 15 منزلة ...

بالتوفيق أخي linuxman .. أنت الوحيد المتحمس لحل المسألة ..

أجل أجل كما قال الحاج مصطفى, 15 digits, مثلا 454123685214651

أين المحاولة أيها الحاج؟!

[سبحان الله و بحمده, سبحان الله العظيم]

#17
اقتباس
أين المحاولة أيها الحاج؟!

laugh.gif

كرمى لعيونك ..سأحل اللغز اليوم .. وأرسل الحل مساءً أو غداً صباحاً ...

الآن بدأ التحدي بالنسبة لي ..wink.gifwink.gif

#18

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

بيان للكود :

حتى الرقم المتحصل عليه

count := 1708910

كانت هذه احتمالات أنبوبين من العشرة وهي منطقية جدا وذلك لأني قمت باستقصاء الاحتمالات من التشكيلة 2و 3 بحيث يكون المجموع 32 بالحلقات المتداخلة وكان عدد الاحتمالات 26215

ثم قمت بجمع كل الحدود حدا حدا وكلما جمعت خزنت النتيجة في المصفوفة ثنائية الأبعاد

ثم احتمال التقاء كل تشكيلة مع الأخرى حتى مع نفسها هو ضرب 26215*26215 الناتج سيكون كبيرا وهو 687226225 ولكن مع الفلترة كان الحاصل هو 1708910 احتمالا

الآن كل أنبوبين يتكرران خمس مرات بكل احتمالاتهما إذا الاحتمالات في عشر أنابيب هي 1708910 قوة 5 الناتج هو

1,45745768883e+31

والله أعلم

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#19
linuxman كتب:

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

بيان للكود :

حتى الرقم المتحصل عليه

count := 1708910

كانت هذه احتمالات أنبوبين من العشرة وهي منطقية جدا وذلك لأني قمت باستقصاء الاحتمالات من التشكيلة 2و 3 بحيث يكون المجموع 32 بالحلقات المتداخلة وكان عدد الاحتمالات 26215

ثم قمت بجمع كل الحدود حدا حدا وكلما جمعت خزنت النتيجة في المصفوفة ثنائية الأبعاد

ثم احتمال التقاء كل تشكيلة مع الأخرى حتى مع نفسها هو ضرب 26215*26215 الناتج سيكون كبيرا وهو 687226225 ولكن مع الفلترة كان الحاصل هو 1708910 احتمالا

الآن كل أنبوبين يتكرران خمس مرات بكل احتمالاتهما إذا الاحتمالات في عشر أنابيب هي 1708910 قوة 5 الناتج هو

1,45745768883e+31

والله أعلم

في حالة أنبوب واحد بـ 32 لتر, هناك 3329 طريقة

في حالة أنبوبين ب 32 لتر, هناك 37120 طريقة

لكن لا يمكن اجراء العملية n قوة m لأن هناك شرط يقيد الطرق التي يمكن استعمالها في ملء أنبوبين متجاورين

و الا كان ليكون عد الطرق في أنبوبين هو 33292 = 11082241 و هذا خطأ, هناك استثنائات كثيرة يتم التخلص منها

1

[سبحان الله و بحمده, سبحان الله العظيم]

#20
مصطفى 36a2 كتب:

laugh.gif

كرمى لعيونك ..سأحل اللغز اليوم .. وأرسل الحل مساءً أو غداً صباحاً ...

الآن بدأ التحدي بالنسبة لي ..wink.gifwink.gif

ههههههههههه

يا معلم مش كنت تقول من زمان انك مستني التحدي, طيب في انتظار الحل و اكيد راح تشتغل بالسي ++ :happy:

[سبحان الله و بحمده, سبحان الله العظيم]

#21
اقتباس
في حالة أنبوب واحد بـ 32 لتر, هناك 3329 طريقة

هذا بداية الخلاف بيني وبينك وأنا اثبت لك أن أنبوبا واحدا يحتمل أكثر مما ذكرت وهو العدد الذي ذكرته وهو 26215

والدليل في المرفقات

text.txt

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#22

عزيزي linuxman الخطأ الجوهري يكمن في خوارزميتك...

فهي تدرس الاحتمالات جميعاً ... وبالتالي عندما تعمل عدة حلقات for متداخلة في مسألة كهذه فأول خطأ سترتكبه سيكون تكرار نفس الاحتمال عدة مرات ...

صحيح ان هذا سيكون صحيحاً "احتمالياً "..ولكنه سيكون خاطئا بالنسبة لمعطيات المسألة ...

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

بالتوفيق

#23

__________________________

لاحظ آخر 34 سطر في المرفق ... وال34 سطر الذي قبلها ... كلها نفس الاحتمال مكرر عشرات المرات ... وهنا يكمن خطؤك ...

أرجو لك التوفيق...

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

حتى لا أحرق السؤال ... (نفسي أشوف المشرف الأخ محمد ابراهيم وهو يحلها )laugh.giflaugh.gif

أتوقع حسب دراستي الحالية (هناك 3 خطوات للوصول للجواب الأولي تتعلق بسعة الانبوب والأخيرة تتعلق بعدد الأنابيب والثانية وسيطة ) ربما يستغرق كتابة الخوارزمية معي 3-4 ساعات ,...

وكتابة الكود بعد الخوارزمية قد يستغرق ساعتين أو ثلاث .. إن شاء الله تعالى ...

يعني تقريباً أحتاج إلى يوم الغد كاملاً حتى أنهي الحل ... ثم أرسله لك بإذن الله تعالى ...

انتظر رسالتي غدا (في مثل هذا الوقت +ساعتين )

بارك الله فيك ..مسألة جميلة جداً ...وأظن أن قلة الإقبال عليها تعني أنها ممتازة وتحتاج إلى تفرغ لمن يريد حلها ...

نلتقي ان شاء الله ...

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

#24
linuxman كتب:

هذا بداية الخلاف بيني وبينك وأنا اثبت لك أن أنبوبا واحدا يحتمل أكثر مما ذكرت وهو العدد الذي ذكرته وهو 26215

والدليل في المرفقات

يمكنك أن تتأكد أن هناك 3329 طريقة في حالة أنبوب واحد بـ 32 لتر عن طريق تطبيق هذه الخوارزمية:

integer ways(integer n)
begin
 if n = 0
  return 1
 end if

 if n < 0
  return 0
 end if

 return ways(n-2) + ways(n-3)
end

//use
print(ways(32));	//result = 3329

البداية من 32, في كل مرة ننقص 2 أو 3, دالة تراجعية واضحة أظن

مصطفى 36a2 كتب:

__________________________

لاحظ آخر 34 سطر في المرفق ... وال34 سطر الذي قبلها ... كلها نفس الاحتمال مكرر عشرات المرات ... وهنا يكمن خطؤك ...

أرجو لك التوفيق...

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

حتى لا أحرق السؤال ... (نفسي أشوف المشرف الأخ محمد ابراهيم وهو يحلها )laugh.giflaugh.gif

أتوقع حسب دراستي الحالية (هناك 3 خطوات للوصول للجواب الأولي تتعلق بسعة الانبوب والأخيرة تتعلق بعدد الأنابيب والثانية وسيطة ) ربما يستغرق كتابة الخوارزمية معي 3-4 ساعات ,...

وكتابة الكود بعد الخوارزمية قد يستغرق ساعتين أو ثلاث .. إن شاء الله تعالى ...

يعني تقريباً أحتاج إلى يوم الغد كاملاً حتى أنهي الحل ... ثم أرسله لك بإذن الله تعالى ...

انتظر رسالتي غدا (في مثل هذا الوقت +ساعتين )

بارك الله فيك ..مسألة جميلة جداً ...وأظن أن قلة الإقبال عليها تعني أنها ممتازة وتحتاج إلى تفرغ لمن يريد حلها ...

نلتقي ان شاء الله ...

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

طيب لما تحلها و تجرب نتيجتك على صفحة التحقق من النتائج و تلاقيها صحيحة :cool: ضع الحل و الكود هنا

يعني لو كل واحد يقول ما اكتب الحل عشان ما تتحرق المسألة, المسألة ما راح تنحل

يلا عاوزين نجيب لغز جديدة, المرة الجاية أي حد منكم يجيب لغز برمجي لأني أريد احاول ما ابقى اتفرج :lol:

[سبحان الله و بحمده, سبحان الله العظيم]

#25

عرفت الآن مكمن الخطأ في الخوارزمية وهو الذي أدى إلى التكرار وهو الذي جعل عدد الاحتمالات كبيرة جدا

جزاك الله خيرا يا مصطفى لم أنتبه لذلك بسبب تسرعي وعجلتي

وقد اصلحت الخطأ

تم تعديل هذه المشاركة بواسطة linuxman في 24 سبتمبر 2012 في 01:06

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

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