前幾天去面試,確切的說是復試。面試官給我出了一道題。是這樣的。
一個農夫有一條船,和三樣東西,狼、羊、和白菜,他要過河,這個船一次只能運一樣東西,要防止狼吃羊、羊吃白菜,該怎么過?
慚愧,我沒答出來。
然后面試官把答案告訴了我,問我怎么用計算機實現?
還是慚愧,我又沒答出來。
今天在上班的路上,想到了,可以做一個推理機來實現。隨后寫了一段程序。
簡單原理:
推導出所有的可能性,遍歷每種可能性,找到最終達到目標的那些樹形分支。
源碼在:http://lmcommon.codeplex.com/
Lm.InferenceEngine 這個項目是推理引擎
InferenceComputer這個是推理引擎的核心類,用來實現推理
InferenceObject這個是推理對象的抽象類,需要使用推理引擎的對象,要繼承這個類,實現其中的抽象方法。
Lm.InferenceEngine.Test 這個項目是調用推理引擎解決此問題的實現。
ThroughBridge這個類實現了推理對象的抽象類,用來給推理引擎提供農夫帶東西過河的故事背景。
簡要推理樹如下
簡要流程如下