前几天去面试,确切的说是复试。面试官给我出了一道题。是这样的。
一个农夫有一条船,和三样东西,狼、羊、和白菜,他要过河,这个船一次只能运一样东西,要防止狼吃羊、羊吃白菜,该怎么过?
惭愧,我没答出来。
然后面试官把答案告诉了我,问我怎么用计算机实现?
还是惭愧,我又没答出来。
今天在上班的路上,想到了,可以做一个推理机来实现。随后写了一段程序。
简单原理:
推导出所有的可能性,遍历每种可能性,找到最终达到目标的那些树形分支。
源码在:http://lmcommon.codeplex.com/
Lm.InferenceEngine 这个项目是推理引擎
InferenceComputer这个是推理引擎的核心类,用来实现推理
InferenceObject这个是推理对象的抽象类,需要使用推理引擎的对象,要继承这个类,实现其中的抽象方法。
Lm.InferenceEngine.Test 这个项目是调用推理引擎解决此问题的实现。
ThroughBridge这个类实现了推理对象的抽象类,用来给推理引擎提供农夫带东西过河的故事背景。
简要推理树如下
简要流程如下
============================================
我的开源项目,都是平时的积累,对提高开发效率很有帮助。
http://lmcommon.codeplex.com/
我的开源项目,都是平时的积累,对提高开发效率很有帮助。
http://lmcommon.codeplex.com/