خوارزمية لحل حسبة برما

بسم الله الرحمن الرحيم

مقدمة …

من ويكيبيديا، الموسوعة الحرة

حسبة برما مقولة مصرية دارجة تقال عندما يحتار الأمر في حساب شئ ما. ورد في موسوعة حلوة بلادي للكاتب إبراهيم خليل إبراهيم : المقولة الشهيرة حسبة برما ترجع لاحدى القري التابعة لمركز طنطا بمحافظة الغربية وهي قرية ( برما ) التي تبعد عن طنطا بحوالي 12 كيلو متر ، وقد جاءت هذه المقولة ( حسبة برما ) عندما اصطدم أحد الاشخاص بسيدة كانت تحمل قفصا محملا بالبيض فأرادو تعويضها عما فقدته من البيض وقالوا لها : كم بيضه كانت بالقفص ؟ فقالت : لو احصيتم البيض بالثلاثة لتبقي بيضة ، وبالاربعة تبقي بيضة ، وبالخمسة تبقي بيضة ، وبالستة تبقي بيضة ، ولو احصيتموه بالسبعة فلا تبقي شيئا

وفي كثير من الأحيان كانت تذكر هذه المقولة أمامي “انت هتعمل زي حسبة برما !!” 😛 , فلا أعرف ما هي هذه الحسبة ولا ما المقصود بها .

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

الخوارزمية :

Repeat
X = X + 1
Until (X mod 2=1) and (X mod 3=1) and (X mod 4=1) and (X mod 5=1) and (X mod 6=1) and (X mod 7=0)
Print X
End

وعلى الرابط التالي هناك تطبيق بدلفي 2009 يقوم بحل هذه الخوارزمية :

http://www.4shared.com/file/92644583/228a43a4/__online.html

6 responses to “خوارزمية لحل حسبة برما

  1. شكراً أخ علاء على الخوارزمية ، لكن اعتقد هناك خطأ لأنك كتبت فى الكود :
    [left]
    X mod 7=1
    [/left]
    و على حسب ما ذكرت المفروض يكون :
    [left]
    X mod 7=0
    [/left]
    ولا أنا غلطان ؟!!!

  2. آسف على الخطأ 🙂 لأني كتبت التدوينة على عجل
    ولكن التطبيق المرفق يعمل بشكل صحيح
    ..
    وجزاك الله خيراً على التنبيه .

  3. ازيك يا علاء
    حبيت أقولك أنه الخوارزمية دي هتاخذ وقت كبير بدون أي فائدة
    ايه رأيك يصير التكرار يزيد سبعة سبعة
    بدل ما هو بيزيد واحد واحد
    وطبعاً هنشيل الشرط بتاع i%7==0
    ممكن نقول نبدأ من 7 ونزيد 14 14
    لأن الأعداد الفردية هي الأعداد الي ممكن يكون فيها أمل
    أما الزوجية فهي هتخالف الشرط i%2=1
    وهذه الخوارزمية التي قمت بعملها
    طبعاً خوارزمية معدلة بحيث تمكنك من إخراج n من الأعداد التي تحقق الشروط

    private static void hesbatBarma(int numbers) {
    int countOfNumbers=0;
    for (int i = 7; ; i+=14) {
    if(i%3==1 &&i%4==1 &&i%5==1 &&i%6==1){
    System.out.println(i+” “+i%420);
    countOfNumbers++;
    if(countOfNumbers==numbers)
    break;
    }
    }

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

    تحياتي

    • اهلا اخ علاء .. جزاك الله خيراً على الإضافة
      الخوارزمية عندي (في دلفي) تعمل بسرعة كبيرة , يمكن في الجافا بتكون بطيئة شوية 😛
      وبالنسبة للزيادة 14 14 , جربتها ونفعت , يصبح الكود بالشكل التالي :

      X := 7 ;
          Repeat
            X := X + 14 ;
          Until (X mod 2=1) and (X mod 3=1) and (X mod 4=1) and (X mod 5=1) and (X mod 6=1) and (X mod 7=0) ;
      

  4. خوارزمية رائعة
    سؤال بعد اذنك كيف استطعت تنسيق الكود هكذا في مدونة ورد بريس المجانية ؟
    أتمنى الرد لآنني بحثت عن هذه الخاصية و لم أجدها

    • عن طريق وسم

      [sourcelanguage="delphi"]
      اكتب الكود هنا
      [/sourcecode]

      طبعاً مع استبدال delphi بلغة البرمجة التي تريد الكتابة بها ليظهر لك التنسيق المناسب له 🙂

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s