لغز الحمار الوحشي هو لغز منطقي شهير يتكوّن من خمسة منازل، كل منها مطلي بلون مختلف. للبيوت سكان مختلفون، يحملون جنسيات مختلفة، ويمتلكون حيوانات أليفة مختلفة، ويشربون مشروبات مختلفة، ويمارسون هوايات مختلفة.
لمساعدتك في حل اللغز، لديك 15 عبارة تصف الحل. لكنك لن تتمكن من إيجاد حل اللغز إلا بجمع المعلومات الواردة في جميع العبارات.
يُعد لغز الحمار الوحشي مسألة رضا القيود (CSP). في مثل هذه المسألة، تكون لديك مجموعة من القيم الممكنة ومجموعة من القيود التي تحدد القيم الصالحة. ومن مسائل رضا القيود (CSP) المشهورة أيضًا سودوكو.
مهمتك هي حل أحجية الحمار الوحشي للعثور على إجابة هذين السؤالين:
من المعروف أن العبارات 15 التالية كلها صحيحة:
وبالإضافة إلى ذلك، كل منزل من المنازل الخمسة مطلي بلون مختلف، وسكانه من جنسيات مختلفة، ويمتلكون حيوانات أليفة مختلفة، ويشربون مشروبات مختلفة، ويمارسون هوايات مختلفة.
توجد 24 مليار حل ممكن (5!⁵ = 24,883,200,000)، لذلك جرّب استبعاد أكبر عدد ممكن من الحلول.
نفّذ الطريقتين waterDrinker وzebraOwner من الصنف ZebraPuzzle.
يجب أن تُرجع كلٌّ منهما سلسلة نصية، تكون قيمتها إجابةً عن سؤالَي أحجية الحمار الوحشي: «من يشرب الماء؟» و«من يمتلك الحمار الوحشي؟».
وستكون كل إجابة إحدى جنسيات السكان: Englishman، أو Spaniard، أو Ukrainian، أو Norwegian، أو Japanese.
من الواضح أنه يمكنك ببساطة كتابة دالتين كلٌّ منهما عبارة واحدة إذا ألقيت نظرة خلسة على برنامج الاختبار لترى الحل المتوقع. لكن الهدف هو تطوير خوارزمية تستخدم المعطيات والقيود المعطاة في الأحجية وتحدّد الإجابتين الصحيحتين.
سجّل في Exercism لتتعلّم وتتقن JavaScript عبر 37 مفهومًا159 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.
استكشف 8 طرق مختلفة لإيجاد حل Zebra Puzzle من بين 24 مليار حل ممكن، بما في ذلك تجاهل التبديلات غير الصحيحة في أسرع وقت ممكن، وخوارزمية AC-3، وحل منطقي موجز جدًا، وحتى خوارزمية جينية!