WOO logo

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

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

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

السؤال ٨: أعاد يهوذا لاحقًا المال إلى الكهنة الذين دُفع له لخيانة يسوع. ماذا فعلوا بالمال؟

الجواب ٨: اشتروا حقلًا فخاريًا، وهو المكان الذي تُدفن فيه الجثث المجهولة. (متى ٢٧: ٦-٨)

أُشير إليّ أن سفر أعمال الرسل يروي قصة مختلفة عما حدث للثلاثين قطعة من الفضة. يُذكر أن يهوذا اشترى حقل الفخاري بنفسه (أعمال الرسل ١: ١٨).

السؤال 9: كيف قتل يهوذا نفسه؟

الجواب 9: الشنق (متى 27: 3-5)

مرة أخرى، يبدو أن لسفر أعمال الرسل رواية مختلفة. لست متأكدًا تمامًا مما أستنتجه، لذا سأترك النص يتحدث عن نفسه: "بثمن شره، اشترى يهوذا حقلًا، فسقط على رأسه، فانشق جسده، وانسكبت أحشاؤه كلها." - أعمال الرسل ١: ١٨.

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

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

بعد هذا، لننتقل إلى الموضوع الرئيسي لهذا الأسبوع، وهو البرمجة الفعّالة لتحقيق يد بوكر من سبع أوراق. قد لا تبدو هذه مشكلة كبيرة، نظرًا لسرعة أجهزة الكمبيوتر.مع ذلك، تتضمن لعبة Ultimate Texas Hold 'Em تحليل 56 تريليون طريقة لسقوط البطاقات. تتطلب كل واحدة منها الفوز في يدين بوكر من سبع بطاقات. قد يستغرق هذا سنوات دون اختصارات.

هناك 133,784,560 طريقة لاختيار سبع بطاقات من مجموعة أوراق لعب مكونة من 52 بطاقة. إحدى الطرق المهمة لتوفير الوقت هي تسجيل كل مجموعة ممكنة مرة واحدة وحفظ النتائج في مصفوفة. ولكن، كيف يمكن الانتقال من سبع بطاقات فردية إلى موقع واحد في المصفوفة؟

قبل أن أجيب، قد أقترح استخدام مصفوفة سباعية الأبعاد بحجم 52^7. يجب أن تستوعب هذه المصفوفة 1,028,071,702,528 عددًا صحيحًا. لا أعتقد أن أي حاسوب مكتبي سيسمح بتخصيص هذا القدر من الذاكرة. لا، نحتاج بطريقة ما إلى ربط 7 بطاقات بعدد صحيح من 0 إلى 133,784,559. يسمح مُجمّع C++ الخاص بي بمصفوفات بهذا الحجم دون أي مشكلة.

أولاً، احسب كل بطاقة بعدد صحيح من 0 إلى 51. يمكنك القيام بذلك بأي طريقة تُفضلها. أنا شخصياً أبدأ بقيم 2 من 0 إلى 3، و3 من 4 إلى 7، وهكذا حتى الآسات التي تتراوح قيمها من 48 إلى 51. من المهم عند قسمة رقم بطاقة على 4 أن يكون الباقي من نفس النوع باستمرار. على سبيل المثال، قد يكون لجميع بطاقات القلوب معامل 0، والمسافات 1، والنوادي 2، والماس 3.

ستقوم وظيفتي بربط أدنى مجموعة من البطاقات 0،1،2،3،4،5،6 بالرقم 0. وبالمثل، سيتم ربط الحد الأقصى للمجموعة 45،46،47،48،49،50،51 بالقيمة القصوى 133،784،559.

على سبيل المثال، دعنا نفكر في مجموعة البطاقات المرقمة 5،10،15،20،25،30،35 ونحدد العدد الصحيح الذي يجب تعيين هذه المجموعة إليه.

أولاً، لنأخذ البطاقة الأقل قيمةً، رقمها 5. يمكننا تجاوز العديد من التركيبات التي تتضمن بطاقة واحدة على الأقل مرقمة من 0 إلى 4. عدد طرق اختيار 7 بطاقات من أصل 47 بطاقة متبقية في المجموعة هو combin(47,7) = 62,891,499. كما ذكرنا سابقًا، هناك combin(52,7) = 133,784,560 طريقة لاختيار 7 بطاقات من أصل 52. لذا، يمكننا تجاوز 133,784,560 - 62,891,499 = 70,893,061 رقمًا تحتوي على بطاقة واحدة على الأقل في نطاق 0 إلى 4.

بعد ذلك، لنأخذ البطاقة الثانية بقيمة 10. يمكننا تخطي المزيد من التركيبات التي تتضمن بطاقة واحدة على الأقل ضمن نطاق 6 إلى 9. عدد طرق اختيار البطاقات الست المتبقية من أصل 42 المتبقية في المجموعة هو combin(42,6) = 5,245,786. هذا من أصل combin(46,6) = 9,366,819 طريقة ممكنة لاختيار البطاقات الست الأخرى التي تزيد قيمتها عن 5 في البطاقة الأولى. لذا، يمكننا تخطي 9,366,819 - 5,245,786 = 4,121,033 رقمًا لمجموعات البطاقات التي تتضمن قيمة واحدة على الأقل بين 6 و9.

بعد ذلك، فكر في البطاقة الثالثة بقيمة 15. يمكننا تخطي المزيد من التركيبات التي تتضمن بطاقة واحدة على الأقل في النطاق من 11 إلى 14. عدد الطرق لاختيار البطاقات الخمس المتبقية من أصل 37 بطاقة المتبقية في المجموعة هو combin(37,5) = 435,897.هذا من بين مجموع (41،5) = 749,398 طريقة ممكنة لاختيار البطاقات الخمس الأخرى التي تزيد قيمتها عن 10 في البطاقة الثانية. لذا، يمكننا تخطي 749,398 - 435,897 = 313,501 رقمًا لمجموعات البطاقات التي تتضمن قيمة واحدة على الأقل بين 11 و14.

بعد ذلك، لنأخذ البطاقة الرابعة بقيمة 20. يمكننا تخطي المزيد من التركيبات التي تتضمن بطاقة واحدة على الأقل ضمن نطاق 16 إلى 19. عدد طرق اختيار البطاقات الأربع المتبقية من أصل 32 بطاقة المتبقية في المجموعة هو combin(32,4) = 35,960. هذا من أصل combin(36,4) = 58,905 طريقة ممكنة لاختيار البطاقات الأربع الأخرى التي تزيد قيمتها عن 15 في البطاقة الثالثة. لذا، يمكننا تخطي 58,905 - 35,960 = 22,945 رقمًا لمجموعات البطاقات التي تتضمن قيمة واحدة على الأقل بين 16 و19.

بعد ذلك، لنأخذ البطاقة الخامسة بقيمة ٢٥. يمكننا تخطي المزيد من التركيبات التي تتضمن بطاقة واحدة على الأقل ضمن نطاق ٢١ إلى ٢٤. عدد طرق اختيار البطاقات الثلاث المتبقية من أصل ٢٧ المتبقية في المجموعة هو combin(٢٧،٣) = ٢٩٢٥. هذا من أصل combin(٣١،٣) = ٤٤٩٥ طريقة ممكنة لاختيار البطاقات الثلاث الأخرى التي تزيد قيمتها عن ٢٠ في البطاقة الرابعة. لذا، يمكننا تخطي ٤٤٩٥ - ٢٩٢٥ = ١٥٧٠ رقمًا لمجموعات البطاقات التي تتضمن قيمة واحدة على الأقل بين ٢١ و٢٤.

بعد ذلك، لنأخذ البطاقة السادسة بقيمة 30. يمكننا تخطي المزيد من التركيبات التي تتضمن بطاقة واحدة على الأقل ضمن نطاق 26 إلى 29. عدد طرق اختيار البطاقتين المتبقيتين من أصل 22 المتبقية في المجموعة هو combin(22,2) = 231. هذا من أصل combin(26,3) = 325 طريقة ممكنة لاختيار البطاقتين الأخريين اللتين تزيد قيمتهما عن 20 في البطاقة الخامسة. لذا، يمكننا تخطي 325 - 231 = 94 رقمًا لمجموعات البطاقات التي تتضمن قيمة واحدة على الأقل بين 26 و29.

لم يتبقَّ لدينا الآن سوى بطاقة واحدة. من البطاقة السادسة، يجب أن يكون مجموعها أكبر من 30. في الواقع، نعلم أنها 35. لذا، يمكننا تخطي البطاقات الأربع المرقمة من 31 إلى 34 للبطاقة السابعة.

في المجمل، قمنا بتخطي 70,893,061+4,121,033+313,501+22,945+1,570+94+4 = 75,352,208 بطاقة.

وبما أننا نبدأ الترقيم من الصفر، كما يفعل جميع المبرمجين الجيدين، فيمكننا تعيين القيمة لمجموعة الأرقام 5،10،15،20،25،30،35 إلى الرقم 75،352،208.

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

أخطط أن أقدم لكم في الأسبوع المقبل تقريرًا أوليًا على الأقل عن الكسوف الكلي الذي سيحدث في 8 أبريل 2024!