开心的饭桶

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

前几天去面试,确切的说是复试。面试官给我出了一道题。是这样的。

一个农夫有一条船,和三样东西,狼、羊、和白菜,他要过河,这个船一次只能运一样东西,要防止狼吃羊、羊吃白菜,该怎么过?

惭愧,我没答出来。

然后面试官把答案告诉了我,问我怎么用计算机实现?

还是惭愧,我又没答出来。

今天在上班的路上,想到了,可以做一个推理机来实现。随后写了一段程序。

简单原理:

推导出所有的可能性,遍历每种可能性,找到最终达到目标的那些树形分支。

源码在:http://lmcommon.codeplex.com/

Lm.InferenceEngine 这个项目是推理引擎
  InferenceComputer这个是推理引擎的核心类,用来实现推理
  InferenceObject这个是推理对象的抽象类,需要使用推理引擎的对象,要继承这个类,实现其中的抽象方法。

Lm.InferenceEngine.Test 这个项目是调用推理引擎解决此问题的实现。
  ThroughBridge这个类实现了推理对象的抽象类,用来给推理引擎提供农夫带东西过河的故事背景。

 

简要推理树如下

简要流程如下

 

posted on 2013-04-25 20:41  开心的饭桶  阅读(4749)  评论(42编辑  收藏  举报