من أحب الأحاديث لنفسي ما رواه أبو داود في سننه من حديث عبد الله بن عمرو رضي الله عنهما (وصححه الألباني) ولفظه:

من قام بعشر آيات لم يكتب من الغافلين، ومن قام بمائة آية كتب من القانتين، ومن قام بألف آية كتب من المقنطرين

وعند تطبيق الحديث والترقي لمرتبة المقنطرين نجد صعوبة واضحة في تقسيم ايات القرآن بعدد 1000 آية، فعلى سبيل المثال:

  • أول 1000 آية من أول البقرة وحتى الأعراف آية 53، ومقدارهم 7 أجزاء ونيف
  • آخر 1000 آية تحوي جزأي تبارك وعمّ فقط!

لهذا التقسيم عدة مساوئ واضحة رغم انتشاره:

  • التقسيم لا يراعي سور القران بل يقطعها عند تمام الألف آية
  • الفرق الشااااااسع بين أول القران بطول آياته، وآخره مع قصرها

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

ثم فتح الله علي بمعرفة المسألة بشكل رياضي، واتضح انها معروفة ولها تطبيقات كثيرة عملية، تعرف بـ Multiway Number Partitioning وتصنيفها NP Hard. ولله الحمد وجدت مكتبة بايثون مفيدة جدا للمسائل المشابهة.

النتيجة: جدول موزون لصلاة المقنطرين، لختم كتاب الله في 6-5-4-3 ليال

لاحظ كيف يتقارب مجموع عدد الكلمات لكل ليلة، كما يزيد مجموع الآيات عن 1000 وهو المطلوب تماما.

الكود: باثون

لو وجدت فائدة فبرجاء نشرها لتعم.