يمكن تخمين الرقم بعشر محاولات فقط. هل تستطيع المساعدة؟

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

جد يلعب مع حفيده لعبة تخمين الأرقام فأعطاه عشر محاولات ثم قال له عليك أن تخمن ما الرقم الذي اخترته من 1-10 وفي كل مرة يخبره الجد إن كان الرقم في عقله أكبر أم أصغر من تخمينه. خمن الطفل الأرقام بشكل عشوائي واستطاع النجاح في النهاية فحاول الجد تصعيب الموقف وقال له أنه سيخمن رقمًا من 1-100 ولديه نفس العشر محاولات.

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

هل يمكنكم التفكير في طريقة لحل هذه اللعبة غير التخمين بعشوائية؟


التعليق السابق

نقول 9 للتأكد من أن الرقم الذي في مخيلته ينتمي للاحاد او العشرات ان قال اصغر فهو ينمتي للاحاد فنقول 5

هنا اذا قال اصغر فلدينا ما يكفي من المحاولات لكون استخدمنا محاولتين فقط ونحتاج ٤ محاولات ولدينا ٨ محاولات ونفس الأمر أن قال اكبر من 5 نحتاج ل ٣ محاولات فقط ولدينا ٨ محاولات

اما اذا قال اكبر من 9 فهذا يعني الرقم ينتمي لفئة العشرات ونطبق ذات الفكرة متجاهلين الاصفار في مخيلتنا فكما قلنا في المثال السابق 5 سنقول هنا 50 وهكذا..

طريقتك جيدة محمد وهي طريقة استبعاد جزء من مجال البحث

لكن عند اختيار الرقم 9 فأنت تراهن على أنك قد تستبعد 91 أو 8 أرقام وهنا الاعتماد على الحظ في اختيار الشخص.

ولكن طريقة أكيدة للحل دائمًا هي أن تختار رقمًا في المنتصف.

فمثلًا لو اختار الشخص رقمًا من 1-100 يمكنك أن تسأله 50 وهكذا إن كان أكبر أو أصغر فقد أنقصت مجال بحثك للنصف وفي كل مرة إن قمت بنفس العملية فستتقلص المسألة حتى تصل للرقم المطلوب مهما كان صعبًا تخمينه.

هذه أحد أكثر طرق البحث الفعالة في علوم الحاسوب تحت اسم Binary search.